Internet interface &amp; integration language system and method

ABSTRACT

A system for generating, on a users terminal, a graphical user interface comprising at least one interface item. A user creates a graphical user interface for an application by using a designer module to drag and drop interface items on a window and by associating properties, events and actions to the interface items. The designer module then generates a set of data corresponding to the interface item using I3ML, a programming language that employs the syntax of XML. The set of data is stored in a file, such as in a server, and then is transmitted to and processed by a player module. The player module receives the set of data and uses it to display the graphical user interface. Each interface item of the user interface has a corresponding set of I3ML data which the player module employs to display it. Upon a user interacting with the interface item, the system is configured to perform an action associated with the interface item, without performing any other action corresponding to the user interface.

RELATED APPLICATION

[0001] This application is based on and claims priority to U.S.Provisional Patent Application No. 60/302,108 entitled, “A SimpleApplication Integration Language System and Method” filed on Jun. 30,2001 with the United States Patent and Trademark Office.

FIELD OF THE INVENTION

[0002] This invention relates to graphic user interfaces, the use ofgraphical interfaces in systems integration and more particularly, to alanguage for enabling a user to create graphic user interfaces andapplications corresponding thereto.

BACKGROUND OF THE INVENTION

[0003] Users typically interact with a computer system by using anapplication. An application is a set of instructions that controls theprocessing of data in accordance with pre-determined rules and inconjunction with interactions by the user. There are countless suchapplications currently being used, such as accounting applications,sales applications, etc.

[0004] There are numerous considerations to be made by a user whendetermining the desirability of deploying and using an application. Oneimportant consideration is the ease of distribution. Unless anapplication already resides on the computing device of a user, theapplication needs to be delivered to the user. Some of the ways that anapplication are currently delivered to a user is via CD-ROM (whereby theuser installs the application software on the computing device), or viaInternet (whereby the user interacts with a user interface which issupported by server software).

[0005] One factor which effects the ease with which applications may bedelivered to a user is the application's accessibility. An applicationshould be globally accessible, e.g.—it should be accessible from anylocation, to any computer connected to a global network or to theinternet. Another important consideration is the ease with which theapplication may be updated, e.g.—to a new version having new or improvedfeatures.

[0006] Another important consideration to be made by a user whendetermining the desirability of using an application is the functionalrichness of the application. The typical user of an application demandsa high level of functionality, irrespective of the complexity that isrequired by the software manufacturer to accomplish this level offunctionality. This is evident by the increasing number of featureswhich are being implemented in new software applications. However, theseincreasingly complex software applications are difficult to develop,take a long time to bring to market, and require highly skilledtechnologists to develop. Of course, applications must also becompatible with the “corporate reality” of network bandwidthconstraints, protocol choices, firewalls, language barriers, etc.

[0007] Several methods are currently being employed in order to createand deliver applications to a user. However, each of these methods failto satisfy all of the above-stated criteria. For instance, one suchmethod is the employment of JAVA TM applets. A JAVA applet can addadditional features to a web browser. Examples include user interfaceelements for collecting data, drawing simple diagrams, and performingcalculations. However, JAVA applets, although designed for use over theinternet, are frequently difficult to distribute and use owing tonon-uniformity of JAVA implementations in web browsers. They also tendto be large in size, requiring significant network bandwidth. Inaddition, they do not provide adequate functional richness (while theyprovide a variety of features, they don't approximate the quality orusability of traditional Windows interfaces), and they are difficult todevelop since the programming is difficult to learn and thus programmersare expensive and tough to hire. In addition, JAVA applets arefrequently incompatible with corporate reality because of theirexcessive network bandwidth requirements, are often unreliable, arecomplex to develop and frequently require special configuration.

[0008] Another method is the employment of CITRIX™. CITRIX allows a userto see the Windows interface of a remote computer. When, for example,the user moves the mouse pointer, he is actually moving the mousepointer of the remote computer at the same time as he moves his own.CITRIX provides a higher level of functional richness since applicationslook identical to locally installed software. Applications deployedusing CITRIX are also somewhat easier to develop than JAVA applets.However, CRIX based applications are completely unsuitable for widespread distribution or use over the internet. They require a largeamount of bandwidth, create security concerns since they requiremodification to a network firewall to run, and do not scale well sincethey tend to quickly consume all of the processing power of their hostcomputer.

[0009] Still another method is the employment of Visual Basic TM andother equivalent application development tools. VB is a programminglanguage that can be used to create almost any type of Windowsapplication. These types of applications must be locally installed. LikeCITRIX, Visual Basic applications provide a higher level of functionalrichness. VB is intended to be, and can be, used by relativelylower-skilled programmers. However, Visual Basic based applications arevery difficult to distribute. These applications cannot be delivered onthe fly, over the internet for example. Their installation requires thata user have disks or CD-roms containing the application. Distributionand updates to a wide audience therefore requires significant resourcesmaking them highly impractical for many applications.

[0010] One of the best and most popular methods currently being employedto deliver applications to a user is hyper-text mark-up language(referred to hereinafter as “HTML”). Applications created using HTUL areeasily distributed to users via the Internet. Furthermore, HTML isrelatively easy to develop. In fact, one of the reasons for theexplosive growth of the Internet is that HTML is readily understandableby a lay person—a person with virtually no knowledge of computerprogramming could use HTML to create a website.

[0011] Unlike the simple webpages of a layperson' web site, however,which typically just delivers content to a user, more complex web sitesdeliver the user interface of a client server application, with accessto a client server's database system. Thus, a web site not only providesa user with a web page which describes a new product for sale, but alsoprovides a user with interface items so that the user can interactivelycommunicate with the host server. For example, the web site may providea user with a button that the user presses so as to place an order forthe new product, data entry fields in which the user may enter his orher name, a credit card number, a billing or shipping address, etc.Alternately, the web site may provide the user with a button that theuser presses in order to enter a review of the product, and furtherprovides to the user space to enter comments about the product'squality, to rate the quality of the product, to read comments or ratingthat others have entered with respect to the same product, etc.

[0012] Though easy to develop and distribute, HTML does not provide ahigh level of functional richness. For one thing, the sophistication ofthe user interface is hampered by the limited choice of user interfacecontrols. HTML applications have very few user interface controls, suchas “forward”, “back”, “stop”, etc. By contrast, Windows applicationshave dozens, and sometimes hundreds, of different controls, enabling auser to perform a myriad of different functions.

[0013] Furthermore, HTML is not suitable for highly interactiveapplications because it is a document centric model, e.g.—it deliverswhole documents to a user. In order to change the user interface whichis displayed to the user, the server delivers a new set of HTML which isemployed to re-display the entire interface which is seen by the user.Likewise, in order to process data entered by a user in a field of theinterface, the server is required to process the entire set of HTULassociated with the interface.

[0014] Thus, there is a need for an improved system and method forcreating and delivering applications and graphical user interfaces to auser.

OBJECT AND SUMMARY OF THE INVENTION

[0015] The present invention is comprised of the Internet Interface &Integration Language (hereinafter referred to as “I3ML”) and foursoftware components: a player module, a designer module, a server, and aservice explorer module, which facilitate the creation, usage andtransmission of a file of I3ML. I3ML is a dialect of Extensible MarkupLanguage (referred to hereinafter as “XML”) that is invented for thepurpose of describing how to display and interact with fully functionalWindows applications. In accordance with a preferred embodiment, theI3ML language follows the syntax rules of XML.

[0016] The creation of a I3ML application begins with the I3ML designermodule. The I3ML designer module is a visual development system thatenables a user to graphically design a Graphical User Interface (GUI)for an application. The user can select from a palette of common andcustom objects (also referred to herein as “interface items”), such as:button, editbox, listbox, tree view, grid, dropdown, etc., and placethese items in desired locations on a window. It is noted that the term“interface item” is used to describe any item that may be shown on theuser interface, such as icons, data fields, content to be displayed,etc. The designer module enables a user to associate properties such ascolor and size to the interface items, and to associate actions that areto be performed when an event, such as left and right mouse click,occurs. The designer module then creates a I3ML representation of theseobjects, properties, actions and events, which is saved to a file forlater displaying by the I3ML player module.

[0017] In addition to managing the visual elements, or objects, of theI3ML application, non-visual elements are also created with thedesigner. Some of these non-visual elements of a I3ML application are:“server”, “file”, “action”, “group”, and “chunk”. Each of these elementsare created in the designer and are stored as a I3ML file. Generally, a“server” element is the name and connection information for a server,such as a I3ML server, a Simple Object Access Protocol (“SOAP”) server,or a WEB server; a “file” element contains the location of a binary filethat resides on a “server” element; an “action” element links a methodof an “object” element to a program that resides on a “server” element;a “group” element is a collection of “action” elements; and a “chunk”element is a collection of elements that are stored but not displayed bythe I3ML player module.

[0018] The I3ML player module is the next component of the invention.The I3ML player module reads a I3ML file and displays the visualelements (and interprets or stores the non-visual elements) as astandard looking Windows application. The I3ML player module is alsocapable of receiving a I3ML file (or a stream of I3ML data) which istransmitted from a I3ML or web server.

[0019] A third component, referred to as a I3ML server, is responsiblefor accepting communication of events which are initiated by interfaceitems in the I3ML player module and responding back to the player modulewith a I3ML file. For example, an application running in the I3ML playermodule can cause the left click of a button to send the contents of aneditbox to a I3ML server, which in turn responds with a I3ML file thatwill populate a listbox.

[0020] Thus, the designer module is employed to generate a file of I3MLwhich, when transmitted to and processed by the player module, willdisplay a user interface. When a user initiates a call to run a I3MLapplication, the player module is activated, much like an ADOBE Acrobat™player is activated when a user initiates a call to display a PDF file.The player module retrieves the corresponding I3ML set and employs it todisplay objects that comprise interface items on a user interface. Eachobject of the user interface has a corresponding I3ML set which theplayer module employs to process it.

[0021] When a user interacts with the user interface, the player moduleperforms an action which is associated with the event which hasoccurred. In some cases, this action is a local action which can beperformed by the player module using a set of I3ML data which alreadyresides in the player module. Alternatively, this action may be a remoteaction, in which case the set of I3ML data corresponding to the selectedobject is received by an I3ML server. The I3ML server employs“connectors” that allow it to interact with other server computers. Theinput and output to those other servers is automatically transformedinto the appropriate format by the connector. The output from the serveris converted to XML, processed further as required and returned to thePlayer in I3ML format.

[0022] The present invention, according to one embodiment thereof,provides the advantage that a user with very limited programmingknowledge or skills can create functionally rich user interfaces. Unlikethe methods previously described in the Background section, whichrequire extensive programming skills, a user can, with remarkable ease,create an interface having various interface items and associate actionsthat are performed when the user interacts with the interface items.Because the data which is employed to display the user interface and tocontrol the functions of the application is generated in the I3MLlanguage, which follows the syntax of XML, it is compatible withexisting applications, tools, etc. that employ XML.

[0023] Furthermore, the present invention, according to one embodimentthereof, provides the advantage that the player module employs aseparate set of I3ML data in order to process and/or display eachinteraction item on the user interface, and can thereby process dataentered by the user in fields of the interface without re-rendering theentire user interface. Thus, for instance, when an interface itemdisplayed on the user interface is modified by a user (e.g.—such as auser populating an editbox of the user interface), the system canprocess the data corresponding to the modified interface item only byprocessing the object associated with that interface item.

[0024] By contrast, in a system that employs HTML for example, themodification of a single item of a user interface by a user requires theserver to re-process a complete set of HTML which is employed tore-display the entire user interface. The present invention therebyvastly improves the efficiency of a system by substantially reducing theprocessing power and network bandwidth required to deliver and displayan application to a user.

[0025] In addition, the present invention, according to one embodimentthereof, provides the advantage that each of the components of thesystem are compliant with existing software tools that employ orgenerate XML formatted data. For instance, Microsoft™ has created toolsto translate data from a SQL (“Standard Query Language”) server into XMLsyntax. Thus, tools such as this and other XML-compliant software toolsmay be employed by the present invention without the need for additionaltranslation software.

[0026] The present invention also provides the advantage that newfunctions and operations can be used in connection with old datasources. For instance, a database may have software associated therewithwhich enables a user to perform a number of operations with the datastored in the database. The present invention enables a user to create anew user interface to access the data in the database and to create newoperations that may be performed with the data in the database byassociating actions to be performed on the data when retrieved from thedatabase, wherein the actions provide functionality that was notpreviously able to be employed.

[0027] The above description sets forth rather broadly the moreimportant features of the present invention in order that the detaileddescription thereof that follows may be understood, and in order thatthe present contributions to the art may be better appreciated. Otherobjects and features of the present invention will become apparent fromthe following detailed description considered in conjunction with theaccompanying drawings. It is to be understood, however, that thedrawings are designed solely for the purposes of illustration and not asa definition of the limits of the invention, for which reference shouldbe made to the appended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

[0028] In the drawings in which like reference characters denote similarelements throughout the several views:

[0029]FIG. 1 is a block diagram that illustrates some of the maincomponents of system that employs I3ML data, in accordance with oneembodiment of the present invention;

[0030]FIG. 2 is a diagram that illustrates a LoginBox of a userinterface, created in accordance with one embodiment of the presentinvention;

[0031]FIG. 3 is a diagram that illustrates a tree hierarchy for the dataobjects that comprise the LoginBox of FIG. 2, in accordance with oneembodiment of the present invention;

[0032] FIGS. 4(a) through 4(z) show a description, attributes andcontent model of various elements, in accordance with one embodiment ofthe present invention;

[0033] FIGS. 5(a) through 5(z) show a description, a list of theproperties and an example of various objects, in accordance with oneembodiment of the present invention; FIGS. 6(a)-(bb) provides examplesof I3ML code for each of the processes that may be performed by a callto a Local.Math file, in accordance with one embodiment of the presentinvention;

[0034]FIG. 7(a)-(ee) provides examples of I3ML code for each of theprocesses that may be performed by a call to a Local.Datetime file, inaccordance with one embodiment of the present invention;

[0035]FIG. 8(a)-(g) provides examples of I3ML code for each of theprocesses that may be performed by a call to a Local.Process file, inaccordance with one embodiment of the present invention;

[0036]FIG. 9(a)-(o) provides examples of I3ML code for each of theprocesses that may be performed by a call to a Local.String file, inaccordance with one embodiment of the present invention;

[0037]FIG. 10 is a block diagram that illustrates some of the componentsof the player module, in accordance with one embodiment of the presentinvention;

[0038]FIG. 11 is a flowchart that illustrates the steps that areperformed by the player module, in accordance with one embodiment of thepresent invention;

[0039]FIG. 12 is a designing interface which is employed by a user tocreate a set of I3ML data that represents a graphical user interface, inaccordance with one embodiment of the present invention;

[0040]FIG. 13 is a user-created graphical interface which is employed bya user to track package locations, in accordance with one embodiment ofthe present invention;

[0041]FIG. 14 is a user-created graphical interface which is employed bya user to translate words or phrases from one language into anotherlanguage, in accordance with tone embodiment of the present invention;

[0042]FIG. 15 is a block diagram that illustrates the components of I3MLserver 12 in more detail, according to one embodiment of the invention;and

[0043]FIG. 16 is a flowchart that illustrates the steps that areperformed during a design phase in order to enable a target to beaccessed via a target request from a player module, in accordance withone embodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

[0044] The present invention, according to one embodiment thereof,relates to a system and method for employing I3ML data in order, amongother things, to enable a user having very little programming knowledgeto create graphic user interfaces. Generally, the system employs I3MLdata so that the user interface may comprise various interface items andinstructions corresponding to the interface item. The data which thesystem requires to display the interface item is stored in a set of I3MLdata associated with the interface item. The set of I3ML datacorresponding to each interface item of the user interface alsocomprises instruction data which, upon the user interacting with theinterface item, is employed by the system to perform functionsassociated with the interface item.

[0045]FIG. 1 is a block diagram that illustrates the basic components ofa system 10 that employs I3ML data, in accordance with one embodiment ofthe present invention. System 10 comprises a server 12 coupled to atleast one desktop device 14. Desktop device 14 has a user interface 20,which is displayed for the user via a player module 18, as will beexplained in detail below. Desktop device 14 is also shown having adesigner module 17 which is employed by a user to design a userinterface, as will be explained in detail below. However, it is notedthat designer module 17 may reside in server 12 or elsewhere in system10, and is shown residing in desktop device 14 for the purpose ofillustration only. It is also noted that desktop device 14 need not be adesktop computer but may be any computing module having a userinterface.

[0046] Server 12 comprises an XSL transform module 22 coupled to aplurality of connectors 24. Connectors 24 are each coupled to a datasource 26, such as a web server, a SOAP server, a mainframe or databasecomputer, etc., each having its own language, format or syntax. Eachconnector is configured to transform a data transmission from itscorresponding data source 26 into XML, and to likewise transform an XMLdata transmission into the particular language or format of the datasource.

[0047] XSL transform module 22 is configured to communicate with playermodule 18 on desktop device 14. Specifically, and as will be discussedin greater detail below, XSL transform module 22 is configured totransform XML data received via connectors 24 into I3ML data to beemployed by player module 18. Player module 18 employs the I3ML data inorder to display user interface 20 on desktop device 14.

[0048] XSL transform module 22 also comprises service explorer module28. As will be explained in greater detail below, service explorermodule 28 allows a users to easily configure and navigate among theservices provided by a particular I3ML server.

[0049] As previously mentioned, desktop device 14 has a designer module17 which is employed by a user to design a user interface. In apreferred embodiment of the invention, designer module 17 is a visualdevelopment system that enables a user to graphically design a GraphicalUser Interface (GUI) for an application. Advantageously, the user canselect from a set of objects (which may comprise common and custom“Windows Interface items” such as: buttons, editbox, listboxes, treeviews, grids, dropdown menus, etc.) and place these objects in desiredlocations on a window. Designer module 17 also enables a user toassociate properties (such as color and size) to these objects.

[0050] Furthermore, designer module 17 also enables a user to associateactions and events to these objects. An action is a function that isperformed by system 10 when a particular event occurs, wherein an eventis a user interaction with the application. Designer module 17 thencreates a I3ML representation of these objects, actions and events.According to one embodiment of the invention, this I3ML representationis then saved to a file for later displaying by the I3ML player module.The I3ML data representations of these properties, actions, events,etc., and the manner in which they are employed by system 10 of thepresent invention, are explained in greater detail below.

[0051]FIG. 12 is a designing interface provided by designer module 17,according to one embodiment of the present invention. The designinginterface provides various windows that a user may employ to create agraphical user interface for an application. For instance, the designinginterface shown in FIG. 12 comprises a palette window 202 and a positionwindow 203. Palette window 202 comprises a plurality of interface itemswhich the user may select. In a preferred embodiment of the invention,the user may drag and drop a selected interface item to a selectedposition onto position window 203.

[0052] The designing interface shown in FIG. 12 also comprises anassociation window 210 and a property manager window 211. Associationwindow 210 comprises various tabs. Each tab provides the user with a setof fields which the user may employ to enter data which the user desiresto associate with the interface item that has been selected. As will bedescribed more fully below, this association data comprises non-visualinformation regarding the interface item. In FIG. 12, association window210 comprises tab 204 having fields for entering “header” data; tab 205having fields for entering “server” data; tab 206 having fields forentering “action” data; tab 207 having fields for entering “group” data;tab 208 having fields for entering “file” data; and tab 209 havingfields for entering “chunk” data.

[0053] Property manager window 211, on the other hand, also comprisesvarious tabs. Each tab provides the user with a set of fields which theuser may employ to enter property data concerning the interface itemthat has been selected. Advantageously, some of the fields in propertymanager module 211 are automatically populated when the user positionsan interface item on position window 203. For instance, property managerwindow 211 comprises property tab 212, having fields for enteringproperty data, and “method and action” tab 213 having fields forentering data corresponding to methods and actions that are to beimplemented by the system when a user interacts with the interface itemwhile using the application.

[0054] When a user positions an interface item on position window 203,the data fields in property manager window 212 that correspond to theposition of the interface item (such as the horizontal and verticalposition of the interface item within the window, the width and heightof the interface item, etc.) may be automatically populated. The usermay also enter various other types of property data in other fieldsproperty manager window 212, such as a caption, the font type and sizeof text displayed on the interface item, the color of the interfaceitem, etc.

[0055] As previously mentioned, by employing the drag and drop featureof designer module 17, a user can position various interface items on awindow to create a customized graphical user interface. In addition,once the user populates the data fields of the association and propertymanager windows as shown in FIG. 12 with data to be associated with theselected interface item, designer module 17 is configured to generate aset of data corresponding to the interface item. The set of data isgenerated in the I3ML language, which is described in detail below, andis stored in a file for subsequent use by player module 18. Thus, a usercan create the code for displaying and controlling the operation of theapplication interface (e.g.—the set of I3ML data for each interfaceitem) without having any programming knowledge.

[0056] Thus, it should be evident that the system of the presentinvention, according to one embodiment thereof, may also employinterface items to replicate standard Windows interfaces. For instance,in order to generate and control the operation of a standard Windowsinterface, a typical system of the prior art employs a complex andvoluminous set of software. The complete set of software controls eachand every interface item to be displayed in the user interface. Eachtime that a user interacts with an interface item displayed on theWindows interface, the entire set of software processes the interaction.

[0057] A user of the system of the present invention, according to oneembodiment thereof, may replicate a typical Windows interfaces by usingdesigner module 17 to drag and drop the same interface items used in theWindows interface in an arrangement similar to that of the Windowsinterface. As will be described in greater detail below, the presentinvention enjoys the advantage that each interface item of the Windowsinterface is generated and controlled by a set of I3ML data which isindependent from the sets of I3ML data that generate and control theoperation of the other interface items in the interface. Therefore, eachtime that a user interacts with an interface item displayed on thereplicated Windows interface, only the corresponding set of I3ML data isrequired to process the interaction, thereby greatly enhancing theefficiency of the system.

[0058]FIG. 2 is an example of a graphical user interface which may becreated by a user. In this case, the graphical user interface which isshown is a small window for logging into an application, which is verysimilar to the type of log-in box which is employed in a Windows™environment. The user creates this log-in box by placing several objectsinto position on the screen. For instance, the user places in the window50 a first group box 52 called “New User?” and a second group box 56called “Already Have an ID?”. In first group box 52, the user positionsbutton 54 called “Get an ID”.

[0059] In second group box 56, the user positions label 58 called “ID”with a corresponding edit box 60 for the user to enter an ID. The useralso positions in second group box 56 a label 62 called “Password” witha corresponding edit box 64 for the user to enter a password. Also insecond group box 56, the user positions a checkbox 66 which is called“Remember My ID & Password”. Below the second group box 56, the userpositions button 68 called “Login”, button 70 called “Cancel” and button72 called “Help”.

[0060] As previously mentioned, once a user has created a userinterface, designer module 17 creates a I3ML representation of theseobjects. In addition, once a user has associated properties, events andactions to these objects, designer module 17 creates a 13MLrepresentation of these properties, events and actions also. In order todo this, designer module 17 employs the I3ML data format, which followsthe commonly used XML format.

[0061] The I3ML Language

[0062] The I3ML language is comprised of elements which, arrangedaccording to a pre-determined syntax, describe how a user interface isto be displayed to a user and functions that are to be performed upon auser interacting with the interface items of the interface. Aspreviously mentioned, the pre-determined syntax of the I3ML language isthe same as the syntax that is employed by XML. Advantageously, designermodule 17 generates code employing the elements and using the desiredsyntax, although it is noted that the code may also be generated byother means, such as by a programmer. This section illustrates how theelements and syntax are employed to generate code which is used by thesystem of the present invention.

[0063] The elements which are employed by the present invention are,according to one embodiment of the invention, as follows: TABLE 1.1Elements List action deleteitem object I3ML file property bulkinsertgroup receive chunk header send column if server content insert sortdata insertitem update delete member updateitem deletecolumn method

[0064] An action element describes a local or remote procedure that isassociated with an event through the “method”element. Remote actions andlocal actions have different attribute values. Its children can be anynumber of send and receive elements, in any order. Send and receiveelements have been detailed later in this section. FIG. 4(a) shows theattributes and value types of various actions.

[0065]FIG. 4(b) shows an example of a I3ML file corresponding to aremote action. In this example, the action code resides on the serverspecified as “server1”. The file on the server is an ASP file specifiedin the target as “soapadd.asp”. The method of communication is a SOAPrequest. The soapaction attribute is present in the soap request headerand is used by firewalls to filter the soap request message. The name ofthe target service for the soap request is identified by the soapserviceattribute. This attribute is present in the body of the soap request.The interval attribute specifies whether or not the function isperiodic. If this attribute has a negative value, then the action isnon-periodic, however, if the value is zero or a positive number, thenthe action is executed repeatedly after the specified interval. Theinterval value is specified in seconds. In the above example, thefunction is not a repeating call, therefore there is no value forinterval. The onfail attribute refers to another action that will beexecuted when this action fails. That action in this example is called“failedaction.” This action must also be defined in the I3ML in the sameway as the “addlocally” and “addremotely” actions have been defined inthe above examples. By setting the blockgui attribute to “false”, theuser can continue to interact with the application while the action isbeing executed.

[0066] The parameter constant is used to specify values that cannot beedited by the user. In the above example, it is specified as “add” andis passed to the “name” variable on the server-side. When utilizing theI3ML server software the “name” constant specifies the target name onthe server side. Active Server Pages can also contain functions to callfrom I3ML actions. The ASP could house numerous functions and the “name”parameter tells the server which one to process. Additionally, the‘constant’ parameter is used to pass any application-dependant values tothe server.

[0067] The first two parameters specified in the action element are thetwo numbers to be added. The “text” values in the two editboxes,“editbox1” and “editbox2” are copied into the two variables in thefunction call, param1 and param2. The result of the action (the sum ofthe two values) is taken from the result variable and copied intoanother editbox named “editbox3”.

[0068]FIG. 4(c) shows an example of a I3ML file corresponding to a localaction. This example performs the same result in the User Interface asthe first example, but the I3ML player renders the result in a differentway. Instead of accessing the server to perform the action, the valuesare added locally in the I3ML player by calling the “add” function inthe “Local.Math” section of local actions. The method is “I3ML ” becausethere is no server request type. In the above example, the parametersand results are exactly the same because the values are received fromthe same objects on the screen and the function variable names areconveniently named the same in the local function as in the Remotefunction. However, the local function names might not always be the sameas the names of the remote function.

[0069] In the above examples, the properties were supplied by the objectspecified as a value for the “from” attribute of the “send” object.However, if “_sender_” is supplied as a value for the “send from” tag,then the value for the specified property is obtained from the objectinitiating the action. This object is the control that the action isattached with through the “method” object. Therefore, “_sender_” is usedto resolve the parameters at runtime.

[0070] The I3ML element is the outermost element tag for all the otherI3ML elements. Advantageously, every I3ML file has a I3ML element (in apreferred embodiment, employs the tag “iii”) as the outermost elementtag in order to be valid and read by the I3ML player module. Thechildren of the I3ML element are the insert, update, and deleteelements.

[0071]FIG. 4(d) shows an example of a I3ML file corresponding to a I3MLelement. This example is a very simple representation of a I3MLapplication. The I3ML element contains two objects within the insertelement—“I3ML Form1” and “EditBox1”. Every I3ML application begins withan I3ML object of class window. This object is the basic window that allof the other elements reside on (e.g.—are a child of). It is noted that,in accordance with a preferred embodiment, each object would havenumerous properties associated with it. The “}” represents n number ofadditional properties.

[0072] The bulkinsert element is used to enter a series of values into acomplex control such as a grid, listbox, dropdown, or tree. This elementallows string values separated by commas to be entered easily into acontrol without having to write out all the code to enter data into eachcell one by one. There are two ways in which bulkinsert can be used topopulate data in a grid or tree control, ‘keyed’ and ‘nonkeyed’. Treecontrols support a third type of bulkinsert called ‘semikeyed’bulkinsert also. FIG. 4(e) shows the attributes and value types ofvarious actions for a bulk insert element.

[0073]FIG. 4(f) shows an example of a tree control wherein data is to bepopulated.

[0074]FIG. 4(g) shows an example of a I3ML file which populates datainto the tree control using the ‘keyed ’ format. In this format, threeproperties are used to define each item: the parentid (itemid of theparent), the itemid (ID of the item to be inserted), and the itemtext(the text to be displayed next to the item). These properties arespecified as follows: <bulkinsert format=“keyed”>parentid,itemid,itemtext </bulkinsert>

[0075] In this example, two nodes, ‘Root3’ and ‘Root4’ are added to thetree control. To specify a particular node as a root node of the treethe parent ID is left blank. Therefore, “,3,Root3” defines a root nodewith itemid ‘3’ and itemtext ‘Root3’. Its child named ‘Child3a’ withitemid ‘9’ can be defined as “3,9,Child3a”. The abridged piece of codein the example also adds two child nodes each to the existing root nodesand renders the following tree control.

[0076] The chunk element is used to store I3ML code locally within themain I3ML file. The I3ML code supplied as chunk is executed at runtime.The chunk tag can contain any I3ML code including insert, update, ordelete. This enables actions like insertion or deletion to be executedlocally, without connecting to the server. However, the chunk elementcannot be used to insert or update another chunk. This element appearswithin the insert, update, or delete tags at the same level as theaction, object, and server elements.

[0077] Chunk has two mandatory attributes, name and contenttype. Thecontent within the chunk can be either I3ML or a reference to a fileobject. The contenttype attribute is used to define the type of contentand it accepts ‘file ’ and ‘I3ML’ as values. If the chunk contains I3ML,then the contenttype value is ‘I3ML’. The value is ‘file’ if the chunkcontains reference to a file object.

[0078] A chunk element can have parameters, which are substituted atruntime. These parameters are written enclosed within curly brackets {}. These values can be obtained from the properties of any other objectdefined in the I3ML.

[0079] The applychunk method of the Local.Process library is used toexecute the chunk element. The chunk is named using the name attributeand this name is used in the applychunk method to refer to the chunk.FIG. 4(h) shows the attributes and value types of various actions.

[0080]FIG. 4(i) shows an example of a I3ML file wherein ‘loginI3ML’ isthe name of the file object that refers to the file containing I3ML.This file has been defined in the I3ML. The chunk has been named‘filechunk’ and the ‘showwindow’ action uses the applychunk method toexecute this chunk

[0081]FIG. 4(j) shows an example of a I3ML file wherein the chunk named‘showchunk1’ is executed using the applychunk method. When the actionassociated with the applychunk method is executed, the player executesthe ‘showchunk1’ chunk, which changes the colo property of ‘window1’ tothe substitute value of ‘{color1}’.

[0082] The column element is used to define the columns within a gildcontrol. This tag is used at three different levels. First, the columntag is used to specify the column-level properties of the differentcolumns in the grid. Next, the column tag is used within the data tag todefine the data that needs to be inserted, deleted, or updated in acolumn at the item level. Finally, the column tag is used within thesort to define the order in which data should be sorted inside thecolumns. FIG. 4(k) shows the attributes and value types of variousactions.

[0083]FIG. 4(l) shows an example of a I3ML file wherein the abridgedpiece of code will insert a column named ‘first’ in the ‘ggrid’ control.Next, data is entered in the grid using the column tag within the datatag. Finally, the column tag within the sort tag is used to specify thesort order of the different columns.

[0084] The content element is a child of the chunk element and containseither the I3ML code or reference to a file object. The name of the fileobject is specified within the content tag if the contenttype is ‘file’.FIG. 4(m) shows an example of a corresponding I3ML file.

[0085] The data element is used to populate multi-item controls, such asdropdowns, trees, grids, and listboxes. Children of the data element canbe a series of insertitem, updateitem, deleteitem, and bulkinsertelements representing each item or row in the object. FIG. 4(n) shows anexample of a data element corresponding I3ML file.

[0086] The delete element contains elements to be removed from the localapplication state. Elements that can be deleted are objects, actions,groups, and files. FIG. 4(o) shows an example of a I3ML filecorresponding to a delete element. This example deletes the object,“EditBox1.”

[0087] The deletecolumn element specifies the column to be removed froma grid control. The column that is being deleted should currently existin the grid and therefore this element is sent as an update of the grid.FIG. 4(p) shows the attributes and value types of various actions.

[0088]FIG. 4(q) shows an example of a I3ML file that deletes the column,“col5”, from the “samplegrid” control.

[0089] The deleteitem element is the child of a data element for complexcontrols. The deleteitem element contains the itemID or itempath of theitem that needs to be deleted in a tree, dropdown, listbox, or grid.FIG. 4(r) shows the attributes and value types of the deleteitemelement. The supported attributes of deleteitem are only valid for treecontrols.

[0090]FIG. 4(s) shows an example of a I3ML file wherein the abridgedpiece of code will delete the item with itemid ‘1’ from the ‘grdgrid’object.

[0091] The file element references a file located on a server to be readby the I3ML player. Files can be reused in numerous applications. Imagesare referenced in an I3ML application using the file element. FIG. 4(t)shows the attributes and value types of various actions.

[0092]FIG. 4(u) shows an example of a I3ML file wherein a file referenceinputs a *.bmp file that resides on the server ‘s1’ into the I3MLapplication. The hostfilename attribute specifies the name and locationof the file on the server. If the preload attribute is set to true, thenthe file is downloaded from the server as soon as the player reads theI3ML file. However, if this attribute is set to false, then the file isdownloaded only when it is to be rendered.

[0093] Group elements describe collections of actions using simpleworkflow language. The actions in an action group can be specified aseither sequential or parallel. FIG. 4(v) shows the attributes and valuetypes of various groups.

[0094]FIG. 4(w) shows an example of a I3ML file corresponding to aparallel group. In this example, The group named “agroup1” consists oftwo actions, “addlocally” and “addrepeat” that are completed in aparallel process—both actions are run at the same time. If one fails theother keeps running. However, if the group contains more actions thanwhat can be executed at a time, then the rest of the actions are firedone by one, as the actions being executed are completed. For each actionthat completes execution, an action from the remaining set of actions isfired. If an action fails, then the remaining actions are not fired,however the actions already being executed are not cancelled and theirexecution is completed. If one of the actions fails in a group, theonfail action that is called is the one of the group. If the individualactions have onfail actions specified, they are ignored. Similarly, thevalue of the interval property for the group overrides the intervalvalue for the individual actions.

[0095]FIG. 4(x) shows an example of a I3ML file corresponding to asequential group. In this example, The group named “agroup2” has twoactions, “addlocally” and “addrepeat” that are completed in a sequentialprocess. “addlocally” is executed first and upon completion “addrepeat”is executed. If the first action fails, the group ceases and the“addrepeat” action is not executed. When any action fails in a group,the onfail action associated with the individual action is ran. Theonfail actions associated with the individual sequential groups areignored.

[0096]FIG. 4(y) shows an example of a I3ML file corresponding to anested group. The group named “agrouptotal” has two groups, “agroup1”and “agroup2” that are completed in a sequentialprocess. “agroup1” isrun first in a parallel process and upon completion “agroup2” is runsequentially. If the execution of either group fails, then the onfailaction defined for ‘agrouptotal’ is fired, just like it is fired for‘agroup1’ in example 1, and ‘agroup2’ in example 2.

[0097] The header element is a reference object that containsinformation about the file name, author, version, etc. Every I3ML fileshould contain a header element as good practice, but it is notrequired. FIG. 4(z) shows the attributes and value types of the headerelement.

[0098]FIG. 4(aa) shows an example of a I3ML file corresponding to aheader element. The header element specifies that this file is version“1.2” and the author of the file is “Smith” and he can be reached at“smith@email.con”.

[0099] The if element is a conditional action element that is a child ofa group element. The if element accepts two values and an operator todetermine whether or not the action is executed. If the conditionalstatement is true, the ‘then’ value of the ‘if’ element is executed.Otherwise, there is an ‘else’ action that can be specified. FIG. 4(bb)shows the attributes and value types of the “if” element.

[0100]FIG. 4(cc) shows an example of a I3ML file corresponding to an ifelement. In the example, the text value of ‘edit1’ is compared to thetext value of ‘edit2’. If the value of ‘edit1’ is less than the value of‘edit2’, then ‘action1’ is executed, else ‘action2’ is executed.

[0101]FIG. 4(dd) shows an example of a I3ML file corresponding to an ifelement. In the example, the value of ‘constant1’ is compared to thevalue of ‘constant2’. Since the first value is not less than the secondvalue, ‘action2’ is executed. FIG. 4(ee) shows a list of operators forthe if element.

[0102] The insert element contains elements to be added to the localstate of the application. Possible inserted elements are seater, chunk,objects, actions, groups or files in any order. Elements already presentin the local application state cannot be re-added.

[0103]FIG. 4(ff) shows an example of a I3ML file that inserts twoobjects, two actions, and one group into the local state of I3ML. Theorder of the objects, actions, and groups does not matter as long as theparent is defined before the children.

[0104] The insertitem element is the child of a data element for complexcontrols. The insertitem element contains properties of the items in atree, dropdown, listbox, or grid. FIG. 4(gg) shows the attributes andvalue types of the insertitem element. The parent of an item can bereferenced either by specifying the parentid or the parent path. Theparentid attribute specifies the ID of the item that is parent to theitem being inserted and the parentpath attribute specifies the path ofthe parent object. Values for parentid and parentpath can be specifiedonly in the case of a tree control. For an item in a tree control,either the parentid or the parentpath is specified. If both parentid andparentpath are specified, the value of parentid overrides the value ofparentpath.

[0105]FIG. 4(hh) shows an example of a I3ML file wherein a tree controlis defined. The root of this tree control has an itemid ‘1’. The namethat will be displayed for the root is ‘Root1’. Next, a branch named‘Child1’ with itemid ‘2’ is defined. The parent of this branch isspecified using the parentid attribute. The itemid of the parent hasbeen specified as the parentid.

[0106]FIG. 4(ii) shows an example of a I3ML file wherein the abridgedpiece of code can be used to create the tree object shown in FIG. 4(jj).

[0107] In this example, a tree has been created with a root named ‘1’.This root has a branch named ‘2’, which has a branch named ‘3’, and soon. The parent items of these branches have been defined using itemtextvalues. The complete path of the parent has been specified as theparentpath. For example, parentpath=“1\2\3” in the code, defines theparent of a new item (item ‘4’). The parentpath of this item isspecified as ‘1\2\3’. This indicates that item ‘4’ is the item to beinserted as a child of item ‘3’, which is a child of item ‘2’, which inturn is a child of item ‘1’.

[0108] While trying to insert a new item in the list, if any of theparent nodes are not found, then they are created first and then theitem is inserted. For example, the tree of FIG. 4(jj) could have beenrendered using the code in FIG. 4(kk) also, where the parent nodes havenot been defined.

[0109] The member element represents an action or group within anothergroup. Groups are made up of one or more member elements.

[0110]FIG. 4(ll) shows the attributes and value types of variousactions.

[0111]FIG. 4(mm) shows an example of a I3ML file which shows a groupwith two members, ‘addlocally’ and ‘subtractlocally’.

[0112] The method element associates the object, event, and action witheach other. The method element is a child of an object. The name of themethod refers to the event captured on the object and the valueattribute specifies the action that is executed when the event occurs.This action has to be defined in the I3ML. FIG. 4(nn) shows theattributes and value types of the method element.

[0113]FIG. 4(oo) shows an example of a I3ML file corresponding to anmethod element. The example associates the action “addlocally” with the“leftclick” event performed on the “button3” object. Every object, whichhas a dynamic action associated with an event, must have a methodelement to associate the elements in the I3ML player.

[0114] As previously mentioned, every visual piece of an I3MLapplication is an object. Objects can be editboxes, panels, windows,labels, and so on. Apart from the main window, each object has a parentobject and most objects support child objects. Parent objects must bedefined in the I3ML before their respective child objects. Property isan element of an object. Objects are differentiated by their properties.Every object has a series of properties that define that object, butevery possible property does not require a value. The properties aremostly updateable and are often changed by actions at runtime. There area few properties for certain objects that are not updateable. FIG. 4(pp)shows the attributes and value types of the object element.

[0115]FIG. 4(qq) shows an example of a I3ML file wherein ‘I3ML form1’ isa window object. This object is the topmost parent of all objects.

[0116]FIG. 4(rr) shows an example of a I3ML file wherein ‘groupbox1’ isa groupbox that resides inside the ‘I3ML form1’ window.

[0117]FIG. 4(ss) shows an example of a I3ML file wherein the editbox isa child of the ‘groupbox1’, which is ultimately a child of the ‘I3MLform1’ window. The name, class, and parent of any of these objectscannot be changed at runtime.

[0118] Property elements define the attributes of objects. Each propertyis used to specify the individual values of the object characteristics.Properties of objects can be listed in any sequence. FIG. 4(tt) showsthe attributes and value types of the property element.

[0119]FIG. 4(uu) shows an example of a I3ML file corresponding to aproperty element. This example displays a series of properties of aneditbox. There are many more properties associated with editboxes. If aproperty value is not specified, the object takes the default value forthat property.

[0120] The receive element is a child of an action element and specifieswhere the server response goes. This element accepts a server variableand converts it into an attribute value of an object. FIG. 4(vv) showsthe attributes and value types of the receive element.

[0121]FIG. 4(ww) shows an example of a I3ML file corresponding to areceive element. In the example, the result of the action (themultiplication value) is taken from the result variable and copied intoan editbox named editbox2. The from attribute value specifies the servervariable, and the value of the to attribute indicates the I3ML object towhich the server response is to be copied. The server response is copiedto the specified property of the object. The property attribute is usedto indicate the property to which the server response should be copied.However, if no property has been mentioned, then the response is copiedto the default property of the I3ML object.

[0122] The send element is a child of an action element. The attributesof a send element convert the property values of an object into functionvariables to perform the action. The constant is an additional variablethat is not determined by user input. FIG. 4(xx) shows the attributesand value types of the send element.

[0123]FIG. 4(yy) shows an example of a I3ML file corresponding to a sendelement. In this example, the first parameter specified in the actionelement passes the value to be multiplied, which is determined by theobject name and property name (“editbox1” and “text”). This value iscopied into the service variable “param1”. The second parameter is aconstant value that is not accepted from a value in the user interface,but specified at design time. It indicates the number with which thefirst value needs to be multiplied. The last parameter specifies thename of the service specified in the target property of the action. Theresult is then displayed as a value for the specified property of“editbox1”. However, if the property is not specified, then the value ispassed to the default property of the object.

[0124] As previously mentioned, The server element describes a serverthat the application connects with to insert a file or perform an actionor group of actions. The server can reside on the same machine on whichthe application is running or on any other machine connected by somekind of communication protocol. FIG. 4(zz) shows the attributes andvalue types of the server element.

[0125]FIG. 4(aaa) shows an example of a I3ML file corresponding to aserver element. The server, “server1”, can be referenced by name in anynumber of actions and files. In this example, the server resides on thesame machine as the application. More realistically the server willreside on a separate machine as in the next example.

[0126] FIGS. 4(bbb), 4(ccc) and 4(ddd), on the other hand, illustrateexamples of the server element as employed for a remote server using ahost name, an IP address and a URL address, respectively.

[0127] The sort element describes the order in which data is sortedwithin a column in a grid control. The sort element can be used tospecify the sorting order for multiple columns. The column tag is usedwithin the sort tag to specify the name of each column and direction ofsorting of data. FIG. 4(eee) shows an example of a I3ML file wherein thedata in ‘column1’ will be sorted in ascending order, and the data in‘column2’ will be sorted in descending order.

[0128] The update element contains elements, which will change the valueof local application state of elements. Its direct children are anynumber of objects, actions, groups files, or servers in any order. FIG.4(fff) shows an example of a I3ML file wherein an update is occurring ineditbox3 and editbox4. The value of the “text” attribute is now equal to“updated” in the first object and the color has been updated to “00FF00”(green) in the second object.

[0129] The updateitem element is used instead of insertitem in updatemode to change the values of the properties of items in complexcontrols. The parentid attribute specifies the ID of the parent item andthe parentpath specifies the path of the parent item. These can bespecified only in the case of a tree control. However, like in theinsertitem element, the parentid attribute supersedes the parentpathattribute.

[0130] While updating tree items, specifying the parentid or parentpathis necessary. If neither of these is supplied, then the I3ML playertreats the item being updated as a root node. This occurs because theplayer cannot locate the parent node and it creates a new node with theitem being updated as the root node.

[0131]FIG. 4(ggg) shows the attributes and value types of the updateitemelement.

[0132]FIG. 4(hhh) shows an example of a I3ML file corresponding to anupdateitem element.

[0133] As mentioned above, one type of element is referred to as an“object”. Objects are the visual components that comprise a userinterface. The objects which are employed by the present invention are,according to one embodiment of the invention, illustrated in Tables 1.2:TABLE 1.2 Objects List button listbox speedbar check mainmenuspeedbargroup datetimepicker memo speedbaritem dropdown menuitem tabseteditbox numericedit tabsheet grid panel tree groupbox picturepaneltoolbar label player globalobj toolbutton radio window

[0134] FIGS. 5(a) through 5(z) show, for each of the objects listed inTable 1.2 a list of the properties that may be attributed to the object,a list of the events that may be associated with each of the objects,and an example of how the object may be described in the I3ML language.A brief description of each object is as follows:

[0135] A button object, which is illustrated in FIG. 5(a), is a simplebutton object frequently used to capture events and perform associatedactions. When the user clicks the button, the image appears depressed.Images can be specified for buttons, along with different images forbutton-down and button-mouseover. There are two different styles forbuttons, Regular and Rounded. RoundedButtons have a series of differentattributes.

[0136] A check object, which is illustrated in FIG. 5(b), is a standarduser interface Boolean representation, a checkbox. When the control ischecked, the value is true and unchecked is false. The graphic changesas the user hovers the mouse over it.

[0137] A datetimepicker object, which is illustrated in FIG. 5(c), is adialog box for selecting a date and time value. Using the styleproperty, this control can be configured to display either a popup boxor spin arrows for selecting the date or time. This property can bespecified only at the time of creation of the control.

[0138] A dropdown object, which is illustrated in FIG. 5(d), is aversion of the standard drop-down combo box. The values to be displayedin a dropdown control are specified using a data element containing aseries of insertitem child elements.

[0139] Data is entered into a dropdown control using the data tag. Theinsertitem tag is used to add data to the dropdown control, theupdateitem tag is used to update a value already present in the control,and the deleteitem tag is used to delete an existing value from thecontrol.

[0140] Like grids and listboxes, some of the attributes are onlyavailable at the item level; they are denoted with an* in FIG. 5(d).Additionally, there are a number of properties that are readable atruntime; they are denoted with a′.

[0141] An editbox object, which is illustrated in FIG. 5(e), is a dataentry box that accepts a single line of text as its value. The value canbe a default value specified when the control was created, a valueentered by the user at runtime, or set from an action procedure from aserver call.

[0142] A grid object, which is illustrated in FIG. 5(f), is a standardcontrol to represent a simple database table. In this control, multipleselection of data is possible. The rowselect property is used to specifywhether or not an entire row can be selected, and the multiselectproperty is used to specify whether or not multiple cells and rows canbe selected. Cell type is limited to entire columns. Celltype can be adropdown or, if not specified, the cell is a simple MS Excel-type cell.Each column and row has an ID or name associated with it at conceptiondefined by the developer. Each row is referred to as an ‘item’. Some ofthe attributes are available only at the item level or column level;they are denoted with an* or˜, respectively. There are a number ofproperties that cannot be set but are used to retrieve specific valuesat runtime. These are denoted with a′.

[0143] In a grid control, first column properties are defined using thecolumn tag. Within the data tag, the insertitem, deleteitem, andupdateitem tags are used for insertion, deletion, and updation of items.Within these tags, the column tags are used to enter data into specificcolumns.

[0144] The sort tag is used in the grid control to specify the sortingorder of data within multiple columns.

[0145] The groupbox object, which is illustrated in FIG. 5(g), is astandard grouping panel with a caption and a line around the panel. Anynumber of child objects can be placed inside a groupbox. This control iscommonly used to separate and/or group different controls together, suchas a set of toggle radiobuttons.

[0146] The label object, which is illustrated in FIG. 5(h), is a controlthat is used to display any text on the screen.

[0147] The listbox object, which is illustrated in FIG. 5(i), is aversion of the standard list box. The lines in the listbox control areitems. The items can be entered at creation or dynamically from aserver. The items in the list are selectable by the user. Like grids,some of the attributes are only available at the item level; they aredenoted with an*. There are a number of properties that are readable atruntime; they are denoted with a′.

[0148] Data is entered into a list control using the data tag. Theinsertitem tag is used to add data to the listbox control, theupdateitem tag is used to update a value already present in the control,and the deleteitem tag is used to delete an existing value from thecontrol.

[0149] A mainmenu object, which is illustrated in FIG. 5(j), is a parentobject that can contain any number of child menuitems to build a menuallowing the user to traverse through and select different items toperform different tasks associated with the items. The mainmenu objectmust be the child of a window object and cannot be created on any othercontrols. The menu can be undocked and moveable around the screen as inthe second image on the right. The pictures below have a series ofmenuitems on the menu in order for the control to be rendered on thewindow. Mainmenu objects without menuitems are not visible to the user.

[0150] Memo is a multi-line edit box, which is illustrated in FIG. 5(k).This edit box allows multiple lines of text to be entered. The memoobject supports horizontal and vertical scrollbars and the wordwrapfeature.

[0151] Menuitem is the child of a mainmenu object, which is illustratedin FIG. 5(l). Menuitems must have a mainmenu or another menuitem astheir parent in order to be rendered on the screen. Normally actions areassociated with the items allowing the user to select the items atruntime. A menuitem can have any number of child menuitems. An arrow tothe right of the parent menuitem denotes the existence of childmenuitems. To view these child menuitems, hover the mouse over theparent menuitem. This displays another popup window containing the childitems. The menuitem object supports both hot keys and accelerator keys.A menu separator line can also be inserted by leaving the captionproperty blank.

[0152] The numericeditbox object, which is illustrated in FIG. 5(m), isa data entry box that allows a single line of text as its value. Thevalue must be in numeric and can have any certain mask typecharacteristics set by its properties.

[0153] The panel object, which is illustrated in FIG. 5(n), is a versionof a group box without a border title area. Any number of childrenobjects can be placed on a panel. The panel is viewed as a raisedsurface on the window.

[0154] The picturepanel object, which is illustrated in FIG. 5(o), is acontrol on which an image is rendered. The image types supported are.bmp,.dib, and .jpeg. The image files need to be defined in the I3ML.The server that these files are located on, also has to be defined.

[0155] A playerglobalobj is a memory object, which is illustrated inFIG. 5(p). This object is not a visual object and cannot be seen on thescreen. This object does not need to be created explicitly in an I3MLfile and neither can it be deleted. It is created automatically as soonas a player instance is created and is deleted as soon as soon as theapplication is closed. This object is used for retrieving and settingproperties.

[0156] A radio object, which is illustrated in FIG. 5(q), is a simpletoggle radio button. Grouped radio buttons can only have one true value.Therefore when one is selected, all of the others are deselected. Thegraphic changes slightly as the user hovers over it.

[0157] A speedbar object is described in FIG. 5(r). A speedbar issimilar to a navigation bar. Items can be placed on collapsible windowsthat link to different screens in the application. A speedbar is similarto a menu bar, because it is two-dimensional. There can be a number ofmenus in the bar each with multiple items.

[0158] The speedbar control does not support top and height properties.A speedbar window is always created of the same height as its parent.

[0159] A speedbargroup, which is illustrated in FIG. 5(s), is a childobject of the speedbar object. It is a collection of speedbaritems.Multiple items can be placed inside each speedbargroup object.

[0160] A speedbaritem, which is illustrated in FIG. 5(t), is a childobject of a speedbargroup. Each speedbaritem can have actions associatedwith it. Picture images can also be placed on speedbaritem objects.

[0161] A tabset object, which is illustrated in FIG. 5(u), allows formultiple panels, called tabsheets, to be situated on top of each otherand the user to switch between them by clicking on a tab protruding fromthe sheets. The control can have any number of child tabsheets. If thenumber of tabsheets is greater than can fit across the top, arrow keysappear in the top right corner to allow the user to traverse through thetabs.

[0162] In the property list, properties not available at runtime aredenoted with Additionally, there are a number of properties that arereadable at runtime. These are denoted with a′ in the table given below.

[0163] A tabsheet object, which is illustrated in FIG. 5(v), is a childobject of the tabset control. Each sheet is represented as a layeredpanel in a tabset control. The user can switch between tabsheets byclicking on a tab protruding from the sheets.

[0164] A tree object is illustrated in FIG. 5(w). The tree control is astandard tree object. The nodes in the tree are listed as data elementsin the object. The nodes can be defined at creation or dynamically froma server. Like grids and listboxes, some attributes are only availableat the item level and some properties are readonly. They are denotedwith* and′, respectively. Additionally, there are some properties thatare available both at the tree and item level. These are denoted with″.

[0165] Data is entered into a tree control using the data tag. Theinsertitem tag is used to add data to the tree control, the updateitemtag is used to update a value already present in the control, and thedeleteitem tag is used to delete an existing value from the control.

[0166] The toolbar object, which is illustrated in FIG. 5(x), is a childwindow that can be placed on the window object. The toolbar has childobjects called toolbuttons, which can display an image, a string, orboth. The user can click on a toolbutton to perform different actions.This toolbar is similar to toolbars in any application, such as aword-processing application or browsers. Toolbars without toolbuttonsare rendered as empty, like the image below. None of the attributes needto have values in order for a toolbar to function.

[0167] The toolbutton object, which is illustrated in FIG. 5(y), is achild object of the toolbar control. Toolbuttons are button-like objectsplaced on a toolbar that perform different actions when eventsassociated with them are occur.

[0168] The window object, which is illustrated in FIG. 5(z), is theprimary window in which all objects or elements of a screen are built.It is typically like a frame object. Each application needs at least onewindow. The window control is the top most parent of all other objects.

[0169] Referring now to FIG. 2, by way of example, an object, such asthe window box, the edit boxes, the buttons, etc. shown in FIG. 2, maybe represented in I3ML code in the following way (abridged for thepurpose of illustration): <object name=“GetIDButton” class=“button”></object>

[0170] Each object is of a particular class, in this case the “button”class. Other classes include “windows”, “radiobuttons”, “groupboxes”,“editboxes”, “labels”, etc.

[0171] Altogether twelve objects should be defined to create the log-inwindow shown in FIG. 2: one window, one check box, two group boxes, twolabels, two edit boxes, and four buttons. Because some of these objectsare positioned within other objects, a hierarchy of objects isestablished. When a first object is positioned within a second object,the first object is referred to as a “child” of the second object, whilethe second object is referred to as a “parent” of the first object.Employing this parent/child hierarchy, objects can be arranged in atree-like structure. FIG. 3 shows a tree-like structure whichillustrates the parent/child hierarchy of the login window shown in FIG.2.

[0172] Within a file of I3ML data, the parent relationship of a firstobject in relation to a second object is indicated by the parentattribute of the object element. For instance, in FIG. 2, the “Login”windowbox object is a parent of the “NewUser” groupbox object, which inturn is a parent of the “GetID” button object. These three objects areexpressed in the I3ML language (abridged for the purpose ofillustration) as shown below. It is noted that, in a preferredembodiment, the parent object is referred to in the I3ML language byname, and in fact, all elements are referred to in the code by theirrespective names. <object name=“LoginWindow” class=“window”> </object><object name=“NewUserGroupbox” parent=“LoginWindow” class=“groupbox”></object> <object name=“GetIDButton” parent=“NewUserGroupbox”class=“button”> </object>

[0173] As mentioned above, the I3ML language also employs an elementreferred to as “property” in order to represent the attributes of anobject. The attributes which are employed by the present invention,according to one embodiment of the invention, are illustrated in Table1.3: TABLE 1.3 3d format password 3state gridlinecolor pictureAccelerator gridlines picturemouseover Afteritem groupseparatorpictureup Alignment hashlines positiveformat allitemsi3ml headercolorprompt allitemidsi3ml headerdragdrop readonly altkey headerfontcolorround ambientlight height rowheader animateexpand helpbutton rowheightautoexpand helptext rownum autoscroll highlighthotitem rowresizeboldexpandedgroup hint rowselect borderstyle horizontalalignmentrowseparator caption horizontalangle scroll celltype hotimage scrollbarschecked hottextcolor scrollinggroup child icon selected classimageheight selectedindex clearselected imageoffset selecteditemclicktosort imagewidth selecteditemid collapseditemidi3ml indexselecteditemi3ml colheader inputmask selecteditemidi3ml colnuminsertmode selectedrowi3ml color internalradius selectedtabsheetcolresize itemid selectedtabsheetid colswap itemtext separator colwidthitempath shiftkey controlkey itemtips showheaderdragimage decimalgroupsleadingzero showitemdragimage decimalplaces left sorted decimalseparatorlinecolor spotintensity defaultbutton maxdigits spotsize defaultimagemaxhscroll stretch direction maximizebutton style disabledimagemaxlength systemmenu dockedposition maximumdate taborder dragdropmaxvscroll tabstop dropdownheight minimizebutton text editableminimumdate textalignment enabled minimumheight textcase expandminimumwidth textonright expandall multiline textoperationexpandeditemidi3ml multiselect textposition extendedsel modal topexternalradius movable trailingtextcolor flat name underlinehotitemfontbold negativecolor verticalalignment fontcolor negativeformatverticalangle fontitalic newselectedi3ml visible fontnameoldselectedi3ml wantreturns fontsize parent width fontstrikeout parentidwordwrap fontunderline parentpath

[0174] For each of the attributes listed in Table 1.3, a description ofthe attributes and the valid values that may be employed in defining theattribute is as follows:

[0175] The 3 d property specifies whether or not the control shouldappear sunken. The value type for this property is Boolean. ControlValid Values Default Value Updateable check true, false false yes

[0176] The 3state property specifies the state of a check control. Ifthe value for this property is set to ‘true’, then clicking on the checkcontrol changes the state of the control to an intermediate (grayed)state. The next click on the control checks or unchecks it. The valuetype for this property is Boolean. Control Valid Values Default ValueUpdateable check true, false false yes

[0177] The accelerator property specifies a key that can be used toexecute the command in the menu option. The accelerator is used incombination with the Alt key, Shift key, or Ctrl key. Additionally, theaccelerator can be used with any two or all three of these keys. Thevalue type for this property is String. Control Valid Values DefaultValue Updateable menuitem string value none yes

[0178] Dependency

[0179] The accelerator property is applicable only if any one or all thethree properties, altkey, shiftkey, and controlkey, have been set totrue.

[0180] The afteritem property inserts an item at a specific positionbetween two tree items. The value type for this property is String.Control Valid Values Default Value Updateable tree string value none yes

[0181] The alignment property specifies the alignment of objects forcertain controls. For example, the alignment of the picture in apicturepanel control is specified using the alignment property. Theposition of the tab buttons with reference to the tab control window canbe defined using this property for the tabset control. The alignment ofitems in a tree can also be specified with the help of this property.The value type for this property is String. Control Valid Values DefaultValue Updateable picturepanel left, center, right, left yes topleft,topcenter, topright, centerleft, center, centerright, bottomleft,bottomcenter, bottomright tabset left, right, top, bottom top yes treeleft, center, right left yes

[0182] The allitemsi3ml property is a readable property of complexcontrols such as dropdown, listbox, tree, mainmenu, toolbar, and grid.It returns the ID and text of all the items as I3ML. The value type forthis property is String.

[0183] The allitemidsi3ml property is a readable property of complexcontrols such as dropdown, listbox, tree, mainmenu, toolbar, and grid.It returns the itemids of all the items as I3ML.

[0184] The value type for this property is Sting.

[0185] The altkey property specifies whether or not the Alt key shouldbe used in combination with the accelerator to execute a menu command.The value type for this property is Boolean. Control Valid ValuesDefault Value Updateable menuitem true, false false yes

[0186] The ambientlight property specifies the coefficient of ambientlighting. The value type for this property is Integer. Control ValidValues Default Value Updateable button integer value greater 7 yes thanzero

[0187] Dependency

[0188] This property is applicable only if the rowid property is set to‘true’.

[0189] The animateexpand property of the speedbar control gives a visualindication while the speedbargroup is expanding. The value type for thisproperty is Boolean. Control Valid Values Default Value Updateablespeedbar true, false true yes

[0190] The autoexpand property specifies whether or not an unselectedgroup should get expanded when the mouse hovers over it. The value typefor this property is Boolean. Control Valid Values Default ValueUpdateable speedbar true, false false yes

[0191] The autoscroll property specifies whether or not scrolling shouldtake place when the mouse is moved over the scrollbuttons in a speedbarcontrol. If this property is set to ‘false’, then scrolling takes placeonly on clicking the scrollbuttons. The value type for this property isBoolean. Control Valid Values Default Value Updateable speedbar true,false false yes

[0192] Dependency

[0193] The autoscroll property is applicable only if the scrollingroupproperty is set to true.

[0194] The boldexpandedgroup property specifies whether or not theexpanded group in the speedbar should be displayed in bold font when itis expanded. The value type for this property is Boolean. Control ValidValues Default Value Updateable speedbar true, false false yes

[0195] The borderstyle property specifies a style for the border of acontrol—examples could be a dotted line, a beveled look, or a simpleresizable window. The value type for this property is String. ControlValid Values Default Value Updateable grid 3d, flat, none 3d no panel3d, recessed, flat 3d no tree 3d, flat, none 3d no window fixed,sizeable sizeable yes

[0196] The caption property is the label or textual value associatedwith the control in the user interface. For example, the text value nextto a radio or check object. The value type for this property is String.

[0197] Dependency

[0198] In the case of a grid control, the caption property is used todisplay the text of the column header or row header and is specified atthe column level or row level, respectively. This property is applicablefor a grid control only if the collheader property or the rowheaderproperty has been set to true.

[0199] The celltype property specifies the type of cells that a columnin a grid control should be composed of. The value type for thisproperty is String Control Valid Values Default Value Updateable griddropdown, normal normal no

[0200] The checked property specifies the default state of a control.This property determines whether or not the control is displayedselected in its initial state. The value type for this property isBoolean/String. Control Valid Values Default Value Updateable checktrue, false, grayed false yes menuitem true, false false yes radio true,false false yes

[0201] The child property specifies whether or not a child window canmove out of the parent window's client area. If this property is set to‘true’, then the user cannot move the child window outside the parentwindow's client area.

[0202] The coordinates of the child window are relative to the parentwindow coordinates. For example, if the top and left values of theparent window are 10 and 10, respectively, then the coordinates for thechild window will be ‘10+y’ and ‘10+x’, where ‘y’ and ‘x’ are the topand left values for the child window. The value type for this propertyis Boolean. Control Valid Values Default Value Updateable window true,false false yes

[0203] The class property specifies the I3ML object being referenced.The values for this property are predefined strings. The type of thecontrol is specified as a value for the class property. This propertydoes not have any default values and cannot be updated at runtime. Thevalue type for this property is String.

[0204] Valid Values: The valid values for the class property are objectnames, such as ‘button’,

[0205] ‘tree’, ‘grid’, and so on.

[0206] The clearselected property specifies whether or not to clear allthe selections made in a control. The value type for this property isBoolean. Control Valid Values Default Value Updateable grid true, falsefalse yes listbox true, false false yes tree true, false false yes

[0207] Clicktosort is a column level property that specifies whether ornot to allow sorting of the data in a column on clicking the columnheader. The value type for this property is Boolean. Control ValidValues Default Value Updateable grid true, false false yes

[0208] The collapseditemidi3ml property is a readable property of a treecontrol. It returns the ID of the collapsed node. The value type forthis property is String. Control Valid Values Default Value Updateabletree *NA *NA no

[0209] The colheader property specifies whether or not to display thecolumn name at the header for each column in a grid. The value type forthis property is Boolean. Control Valid Values Default Value Updateablegrid true, false true yes

[0210] The column property is used to specify the number of columns thatshould be displayed in a grid control initially. The number of thesecolumns can be increased later. The value type for this property isInteger. Control Valid Values Default Value Updateable grid integervalue none yes

[0211] The color property specifies a color for the background of acontrol. The value type for this property is String.

[0212] Dependency

[0213] In the case of a button control, this property is applicable onlyif the round property is set to ‘true’. For a toolbar control, thisproperty is applicable only if the flat property is set to ‘false’.

[0214] The colresize property specifies whether or not the columnsshould resize to fit the data entered into them by the user or theserver. The value type for this property is Boolean. Control ValidValues Default Value Updateable grid true, false false yes

[0215] Dependency

[0216] This property is applicable only if the colheader property hasbeen set to ‘true’.

[0217] The colswap property specifies whether or not to allow the dragand drop feature for columns. The value type for this property isBoolean. Control Valid Values Default Value Updateable grid true, falsefalse yes

[0218] Dependency

[0219] This property is applicable only if the colheader property hasbeen set to ‘true’.

[0220] The colwidth property specifies the width in pixels of the columnin a grid. This property is specified at column level. The value typefor this property is Integer Control Valid Values Default ValueUpdateable grid integer value none yes

[0221] The controlkey property specifies whether or not Ctrl key shouldbe used in combination with the accelerator to execute a menu command.The value type for this property is Boolean. Control Valid ValuesDefault Value Updateable menuitem true, false false yes

[0222] The decimalgroups property specifies the number of digits in adecimal group of a numericedit control. The value for this propertydetermines after how many characters should a group separator be placed.The value type for this property is Integer. Control Valid ValuesDefault Value Updateable numericedit integer value 3 yes

[0223] The decimalplaces property specifies the number of decimal placesthat should be displayed in a numericedit control. The value type forthis property is Integer. Control Valid Values Default Value Updateablenumericedit integer value 2 yes

[0224] The decimalseparator property specifies the character to bedisplayed between the whole numbers and decimal numbers in a numericeditcontrol. The value type for this property is String. Control ValidValues Default Value Updateable numericeditcontrol string value .(dot)yes

[0225] The defaultbutton property specifies whether or not the buttoncontrol is to be displayed as the default button in the window or dialogbox. The value type for this property is Boolean. Control Valid ValuesDefault Value Updateable button true, false false yes

[0226] The defaultimage property specifies the name of the image to bedisplayed when the toolbutton is enabled and not highlighted. The valuetype for this property is String. Control Valid Values Default ValueUpdateable toolbutton Name of file object none yes

[0227] The direction property specifies the sort order for data within acolumn in a grid control. The value type for this property is String.Control Valid Values Default Value Updateable grid ascending, ascendingno descending

[0228] The disabledimage property specifies the name of the image to bedisplayed when a toolbutton control is disabled. The value type for thisproperty is String. Control Valid Values Default Value Updateabletoolbutton Name of a file none yes object

[0229] The dockedposition property specifies the position of a controlon the screen when the control is rendered. If the value is set to‘none’ or ‘never’, then the control is displayed as a floating control.The value type for this property is String. Control Valid Values DefaultValue Updateable toolbar right, left, bottom, top yes top, none, nevermainmenu right, left, bottom, top yes top, none, never

[0230] The dragdrop property specifies whether or not items shouldsupport the drag and drop functionality. The value type for thisproperty is Boolean. Control Valid Values Default Value Updateablespeedbar true, false false yes tree true, false false yes

[0231] The dropdownheight property specifies the height in pixels thatthe dropdown list of the dropdown control should extend to. The valuetype for this property is Integer. Control Valid Values Default ValueUpdateable dropdown integer values Four times the yes height of thestatic area

[0232] The editable property specifies whether or not the text can bechanged in a grid or tree control. This property is applicable at thecolumn level in the case of a grid control. The value type for thisproperty is Boolean. Control Valid Values Default Value Updateable gridtrue, false false yes tree true, false false yes

[0233] The enabled property specifies whether or not the user should beable to interact with the object. The value type for this property isBoolean.

[0234] The expand property specifies whether or not expansion shouldoccur at control level as well as item level in a tree control. If thisproperty is set to ‘true’, then the control level node is not expandedwhen it is rendered. The value type for this property is Boolean.Control Valid Values Default Value Updateable tree true, false false no

[0235] The expandall property specifies whether or not all the nodes ina tree control should be expanded completely when it is rendered on thescreen. The value type for this property is Boolean. Control ValidValues Default Value Updateable tree true, false false no

[0236] The expandeditemidi3ml property is a readable property of a treecontrol. It returns the ID of the expanded node. The value type for thisproperty is String. Control Valid Values Default Value Updateable tree*NA *NA no

[0237] The extendedsel property specifies whether or not a selected treeitem should be displayed as selected even when the tree is not in focus.The value type for this property is Boolean. Control Valid ValuesDefault Value Updateable tree true, false true yes

[0238] The externalradius property specifies the external radius of around button control. The value provided for this property determinesthe curve shape of the button control. The value type for this propertyis Integer. Control Valid Values Default Value Updateable button integervalue greater 35 yes than zero

[0239] Dependency

[0240] This property is applicable only if the round property has beenset to ‘true’.

[0241] The flat property specifies whether or not the toolbuttons in atoolbar control should appear raised. The value type for this propertyis Boolean. Control Valid Values Default Value Updateable toolbar true,false true yes

[0242] The fontbold property specifies whether or not the text orcaption of the control should be displayed in bold font. The value typefor this property is Boolean.

[0243] The fontcolor property specifies the color of the text or thecaption of a control. The value type for this property is String.

[0244] The fontitalic property specifies whether or not the text orcaption should be displayed in italics. The value type for this propertyis Boolean.

[0245] The fontname property specifies the font style of the text orcaption property. The value type for this property is String.

[0246] The fontsize property specifies the text size in standard windowssizing. The value type for this property is Integer.

[0247] The fontstrikeout property specifies whether or not the text orcaption of the control should have a line going through it. The valuetype for this property is Boolean.

[0248] The fontunderline property specifies whether or not the text orcaption of the control should be underlined. The value type for thisproperty is Boolean.

[0249] The format property specifies the format that the date and timeshould appear in within the editbox part of the datetimepicker control.The value type for this property is String. Control Valid Values DefaultValue Updateable datetimepicker A combination of none yes d, M, y, h, m,s, t*

[0250] Valid formats and format combinations have been detailed inAppendix 1.

[0251] The gridlinecolor property specifies the color of the hashlinesin a grid control. The value type for this property is String. ControlValid Values Default Value Updateable grid RGB value C0C0C0 yes

[0252] The gridlines property specifies whether or not a border shouldbe rendered around the cells in a grid control. The value type for thisproperty is String. Control Valid Values Default Value Updateable gridnone, horizontal, both yes vertical, both

[0253] The groupseparator property specifies the character to displaybetween the whole number groups in a numericedit control. The value typefor this property is String. Control Valid Values Default ValueUpdateable numericedit string value ,(comma) yes

[0254] The hashlines property specifies whether or not to display thehash marks on a tree control. These hash marks are used for expandingand collapsing a branch. The value type for this property is Boolean.Control Valid Values Default Value Updateable tree true, false true yes

[0255] The headercolor property specifies the color of the header partof controls, such as the speedbargroup and datetimepicker. The valuetype for this property is String. Control Valid Values Default ValueUpdateable datetimepicker RGB value 0000ff yes speedbargroup RGB valueC0C0C0 yes

[0256] The headerdragdrop property specifies whether or not groupswithin a speedbar control should support the drag and dropfunctionality. The value type for this property is Boolean. ControlValid Values Default Value Updateable speedbar true, false false yes

[0257] The headerfontcolor property specifies the color of the textdisplayed in the header part of controls, such as the speedbargroup anddatetimepicker. The value type for this property is String. ControlValid Values Default Value Updateable datetimepicker RGB value ffffffyes speedbargroup RGB value 000000 yes

[0258] The height attribute specifies the value in pixels of the bottommost position on the screen minus the top most position of the control.The value type for this property is Integer.

[0259] The helpbutton property specifies whether or not a help buttonshould be displayed in a window control. The value type for thisproperty is Boolean Control Valid Values Default Value Updateable windowtrue, false false yes

[0260] Dependency

[0261] This property is applicable only if the minimizebutton andmaximizebutton properties are set to ‘false’.

[0262] The helptext property specifies the help text to be displayedwhen the question mark on the titlebar is moved to the control. Thevalue type for this property is String.

[0263] Dependency

[0264] This property is applicable only if the helpbutton property hasbeen set to ‘true’.

[0265] The highlighthotitem property specifies whether or not the tabunder the stylus should be highlighted in a tabset control. The valuetype for this property is Boolean. Control Valid Values Default ValueUpdateable tabset true, false false no

[0266] The hint property specifies the text to be displayed when themouse is positioned next to the control. The value type for thisproperty is String.

[0267] The horizontalalignment property specifies the alignment of thebutton image within a button control. The value type for this propertyis String. Control Valid Values Default Value Updateable button left,center, right center yes

[0268] The horizontalangle property specifies the horizontal directionof light in degrees for a round button control. The value type for thisproperty is Integer. Control Valid Values Default Value Updateablebutton integer value −45 yes between −360 and 360

[0269] Dependency

[0270] This property is applicable only if the round property has beenset to ‘true’.

[0271] The hotimage property specifies the name of the image to bedisplayed when a toolbutton control is highlighted. The value type forthis property is String. Control Valid Values Default Value Updateabletoolbutton Name of a file none yes

Object

[0272] The hottextcolor property specifies the color of the text when atoolbutton is highlighted. The value type for this property is String.Control Valid Values Default Value Updateable toolbar RGB value 000000yes

[0273] The icon property specifies the name of the icon to be displayedon the top left corner of a window control. The value type for thisproperty is String. Control Valid Values Default Value Updateable windowName of a file none no object

[0274] The imageheight property specifies the height of an image in atoolbar control.

[0275] The value type for this property is Integer. Control Valid ValuesDefault Value Updateable toolbar integer value 20 no

[0276] The imageoffset property specifies whether or not a border shouldbe displayed between the image and the edge of the button control. Thevalue type for this property is Boolean. Control Valid Values DefaultValue Updateable button true, false false yes

[0277] The imagewidth property specifies the width of an image in atoolbar control.

[0278] The Value Type for this Property is Integer. Control Valid ValuesDefault Value Updateable toolbar integer value 20 no

[0279] The index property specifies the order of the tabsheet objects tobe rendered on the tabset object. The value type for this property isInteger. Control Valid Values Default Value Updateable tabsheet integervalue 0 no

[0280] The inputmask property specifies the mask format for the editboxand numericedit controls. The value type for this property is String.Control Valid Values Default Value Updateable editbox string value noneyes numericedit string value none yes

[0281] In the case of the numericedit control, only numeric values areaccepted. The inputmask property is used to specify any alphanumericcharacter that needs to be displayed with the numbers. However,inputmask for the editbox control indicates the values that will beaccepted by the control. Inputmask has the following possible values inthe case of an editbox control. Value Meaning # Only numeric characterscan be entered . Specifies the decimal placeholder. It indicates thedecimal position. This character is displayed literally on the screen. ,Indicates the position of the group separator. This character isdisplayed literally on the screen. : Indicates the position of the timeseparator. This character is displayed literally on the screen. /Indicates the position of the date separator. This character isdisplayed literally on the screen. A Indicates that alphanumericcharacters can be entered as values. & Indicates that ANSI characterscan be entered as values. The values must lie between 32-126 or 128-255.? Indicates that only alphabetical characters can be entered asvalues. > Accepts alphabetical values but displays all the characters inupper case. < Accepts alphabetical values but displays all thecharacters in lower case. \ Indicates that the next character should bedisplayed literally on the screen. This is used characters such as ‘?’,‘#’, ‘&’, and so on need to be displayed on the screen.

[0282] The insertmode property specifies whether or not insertion ofcharacters in between the existing characters should be allowed. Thevalue type for this property is Boolean. Control Valid Values DefaultValue Updateable editbox true, false true yes

[0283] The internalradius property specifies the internal radius of around button control. The value type for this property is Integer.Control Valid Values Default Value Updateable button integer valuegreater 8 yes than zero

[0284] Dependency

[0285] This property is applicable only if the round property has beenset to ‘true’.

[0286] The itemid property specifies the ID value for the items of acomplex control, such as a dropdown or listbox. The value type for thisproperty is Integer.

[0287] The itemtext property specifies the caption for the items of acomplex control, such as a grid or listbox. The value type for thisproperty is String.

[0288] The itempath property specifies the path of the items of acomplex control such as a tree control. The value type for this propertyis String.

[0289] The itemtips property specifies whether or not to display thecomplete item for partially hidden items. The value type for thisproperty is Boolean. Control Valid Values Default Value Updateable treetrue, false false yes

[0290] The leadingzero property specifies whether or not a zero isplaced before a decimal in a numericedit control. The value type forthis property is Boolean. Control Valid Values Default Value Updateablenumericedit true, false false yes

[0291] The left property specifies the x-coordinate with respect to theleft most point of the parent object. The value type for this propertyis Integer.

[0292] The linecolor property specifies the color of the hashlines in atree control. The value type for this property is String. Control ValidValues Default Value Updateable tree RGB value 000000 yes

[0293] The maxdigits property identifies the maximum number of digitsthat can be used for a numericedit control. The value type for thisproperty is Integer. Control Valid Values Default Value Updateablenumericedit integer value −1 (unlimited) yes

[0294] The maxhscroll property specifies whether or not a horizontalscrollbar should be displayed in a window control. If the maxhscrollvalue is greater than 0, and the scrollbars property is set to‘horizontal’ or ‘both’, a horizontal scroll bar is displayed when thewidth of the window becomes less than the maxhscroll value. Themaxhscroll property is applicable only if the borderstyle property is‘sizeable’. The value of the maxhscroll property cannot be less thanminimumwidth.

[0295] The maxhscroll and scrollbars properties are related and togetherthey determine whether a horizontal scrollbar is displayed or not. Thevalue type for this property is Integer Control Valid Values DefaultValue Updateable window integer value none yes

[0296] Dependency

[0297] This property is applicable only if the scrollbars property hasbeen set to ‘horizontal’ or ‘both’.

[0298] The maximizebutton property specifies whether or not the windowcan be sized larger by rendering a maximize button in the top rightcorner. The value type for this property is Boolean. Control ValidValues Default Value Updateable window true, false false yes

[0299] The maxlength property specifies the maximum number of charactersthat can be entered in an editbox or memo control. The value type forthis property is Integer. Control Valid Values Default Value Updateableeditbox integer value 0 (unlimited) yes memo integer value 0 (unlimited)yes

[0300] The maximumdate property specifies the maximum date for adatetimepicker control. The value type for this property is String.Control Valid Values Default Value Updateable datetimepicker stringvalue 12/31/9999 yes

[0301] The maxvscroll property specifies whether or not a verticalscrollbar should be displayed in a window control. If the maxvscrollvalue is greater than 0, and the scrollbars property is set to‘vertical’ or ‘both’, a vertical scroll bar is displayed. The maxvscrollproperty is applicable only if the borderstyle property is “sizeable’.The maxvsroll value cannot be less than the minimumheight value.

[0302] The maxvsroll and srollbars properties are related and togetherthey determine whether a vertical scrollbar is displayed or not. Thevalue type for this property is. Integer. Control Valid Values DefaultValue Updateable window integer value none yes

[0303] Dependency

[0304] This property is applicable only if the scrollbars property hasbeen set to ‘vertical’ or ‘both’.

[0305] The minimizebutton property specifies whether or not the windowcan be sized smaller by rendering a minimize button in the top rightcorner of the window. The value type for this property is Boolean.Control Valid Values Default Value Updateable window true, false falseyes

[0306] The minimumdate attribute specifies the minimum date for adatetimepicker control. The value type for this property is String.Control Valid Values Default Value Updateable datetimepicker stringvalue 1/1/1601 yes

[0307] The minimumheight attribute specifies the minimum height for awindow control. The value type for this property is Integer. ControlValid Values Default Value Updateable window integer value 0 yes

[0308] The minimumwidth attribute specifies the minimum width for awindow control. The value type for this property is Integer. ControlValid Values Default Value Updateable window integer value 0 yes

[0309] The multiline property specifies whether tabsheets should move tothe next line if the width of the tabset control is less. The value typefor this property is Boolean. Control Valid Values Default ValueUpdateable tabset true, false false yes

[0310] The multiselect property specifies whether or not the user canselect more than one item in the control. This feature is used formultiple item controls, such as listboxes, grids, and trees. The valuetype for this property is Boolean. Control Valid Values Default ValueUpdateable grid false false no listbox true, false false no tree true,false true no

[0311] The modal attribute specifies whether or not operations can beperformed outside a window control when it is active. A parent windowcannot be a modal window. The value type for this property is Boolean.Control Valid Values Default Value Updateable window true, false falseno

[0312] The movable attribute specifies whether or not a user can dockand undock the control to a different position on the screen at runtime.This property cannot be updated at runtime, it can be specified onlywhen the control is created. The value type for this property isBoolean. Control Valid Values Default Value Updateable toolbar true,false true no mainmenu true, false true no

[0313] The name property specifies the name that will be used to referto the control in the I3ML. The value type for this property is String.

[0314] The negativecolor property specifies the color of the negativevalues displayed in a numericedit control. The value type for thisproperty is String. Control Valid Values Default Value Updateablenumericedit RGB value black yes

[0315] The negativeformat property specifies the mask format fornegative values in a numericedit control. The value type for thisproperty is String. Control Valid Values Default Value Updateablenumericedit string value −1.1 yes

[0316] The newselectedi3ml property is a readable property of complexcontrols such as dropdown, listbox, tree, and grid. It returns the IDand text of the currently selected item as I3ML. In the case of a tabsetcontrol, it returns the name of the currently selected tabsheet Thevalue type for this property is String.

[0317] The oldselectedi3ml property is a readable property of complexcontrols such as dropdown, listbox, tree, and grid. It returns the IDand text of previous selected item as I3ML. In the case of a tabsetcontrol it returns the name of the previously selected tabsheet. Thevalue type for this property is String.

[0318] The parent property specifies the name of the parent object ofthe control. The value of this property should not be null for anycontrol other than the top-level window objects. The value type for thisproperty is String.

[0319] The parentid property specifies the ID of the parent under whichthe current item is placed. The value type for this property is String.Control Valid Values Default Value Updateable tree string value none yes

[0320] The parentpath property specifies the complete path of the parentitem while inserting an item under another. The value type for thisproperty is String. Control Valid Values Default Value Updateable treestring value none yes

[0321] The password property specifies whether or not the editbox fieldis a password field. If the password property is set to true, any textin the control shows up to the user as a series of asterisks—one foreach character in the true value. The password property is applicableonly when the inputmask is not specified. The value type for thisproperty is Boolean. Control Valid Values Default Value Updateableeditbox true, false false no

[0322] The picture property specifies the name of an image file to bedisplayed with a speedbaritem control. The value type for this propertyis String. Control Valid Values Default Value Updateable speedbaritemName of file object none yes

[0323] The picturemouseover property specifies the name of an image fileto be displayed on the control when the mouse is hovering over it. Inthe case of a picturepanel control, the name of an icon file can also bespecified. The image types supported by the button control are .bmp,.gif, .jpeg, and .jpg. The picturepanel control supports .bmp, .dib,.gif, and .jpg files. The value type for this property is String.Control Valid Values Default Value Updateable button string value noneyes picturepanel string value none yes

[0324] The pictureup property specifies the name of an image or iconfile to be displayed on the control when it is not pressed down or themouse it hovering over it. This image is the source for the button imagewhen there is no interaction with the control by the user. The imagetypes supported by the button control are .bmp, .gif, .jpeg, and .jpg.The picturepanel control supports .bmp, .dib,. gif, and .jpg files. Thevalue type for this property is String. Control Valid Values DefaultValue Updateable button string value none yes picturepanel string valuenone yes

[0325] The positiveformat property specifies the mask format forpositive values in a numericedit control. The value type for thisproperty is String. Control Valid Values Default Value Updateablenumericedit string value 1.1 yes

[0326] The prompt property specifies the character that will be used todisplay the mask. It should be only one character. The value type forthis property is String. Control Valid Values Default Value Updateableeditbox string value none yes

[0327] Dependency

[0328] This property is applicable only if the value for inputmask hasbeen specified.

[0329] The readonly property specifies whether or not the user canupdate the text in controls such as a dropdown, editbox, numericedit, ormemo control. The value type for this property is Boolean.

[0330] The round property specifies whether or not the button controlshould be displayed as a rounded button. The value type for thisproperty is Boolean. Control Valid Values Default Value Updateablebutton true, false false yes

[0331] The rowheader property specifies whether or not the row ID ofeach column should be displayed on the header in a grid control. Thevalue type for this property is Boolean. Control Valid Values DefaultValue Updateable grid true, false false yes

[0332] The rowheight property specifies the pixel value of the height ofthe rows in a grid control. The value type for this property is Integer.Control Valid Values Default Value Updateable grid Integer value noneyes

[0333] The rownum property specifies the total number of rows thatshould be supported by the grid control initially. The number of rowscan be increased later. The value type for this property is Integer.Control Valid Values Default Value Updateable grid Integer value noneyes

[0334] The rowresize property specifies whether or not the rows can beresized on the UI in a grid control. The value type for this property isBoolean. Control Valid Values Default Value Updateable grid true, falsefalse yes

[0335] Dependency

[0336] This property is applicable only if the rowheader value is set to‘true’.

[0337] The rowselect property specifies whether or not the whole row ina control should be selected on clicking on any cell. The value type forthis property is Boolean. Control Valid Values Default Value Updateablegrid true, false false yes tree true, false false yes

[0338] The rowseparator property specifies whether or not a line shouldappear between the different rows in a dropdown control. The value typefor this property is Boolean. Control Valid Values Default ValueUpdateable dropdown true, false false yes

[0339] The scroll property specifies whether or not a scrolling shouldhappen in an editbox or numericedit control. This property cannot beupdated at runtime. The value type for this property is Boolean. ControlValid Values Default Value Updateable editbox true, false true nonumericedit true, false true no

[0340] The scrollbars property specifies whether or not horizontal andvertical scrollbars should be displayed in a control. The value type forthis property is String. Control Valid Values Default Value Updateablegrid both, none, vertical, both yes horizontal memo both, none,vertical, none yes horizontal window both, none, vertical, none yeshorizontal

[0341] The scrollingroup property specifies whether or not scrolling ofitems inside a group should be allowed in a speedbar control. The valuetype for this property is Boolean. Control Valid Values Default ValueUpdateable speedbar true, false true yes

[0342] The selected property is specified at item level. If the valuefor this property is set to ‘true’, that item will be displayed selectedby default when the control is rendered. This property cannot beretrieved at runtime. In the case of a tabsheet control, this propertyspecifies whether the tabsheet is selected or not. The value type forthis property is Boolean.

[0343] The selectedindex property is specified at the item level. Thisproperty is used in case of a dropdown celltype. It specifies which itemin the dropdown list should be displayed as selected. The value type forthis property is String. Control Valid Values Default Value Updateablegrid String value none yes

[0344] The selecteditem property is a readable property of complexcontrols such as dropdown, listbox, tree, and grid. It returns the ID ofthe selected item. The value type for this property is String.

[0345] The selecteditemid property is a readable property of complexcontrols such as dropdown, listbox, tree, and grid. It returns the valueof the selected item. The value type for this property is String.

[0346] The selecteditemi3ml property is a readable property of complexcontrols such as dropdown, listbox, tree, mainmenu, toolbar, and grid.It returns the ID and text of all the selected items as I3ML. The valuetype for this property is String.

[0347] The selecteditemidi3ml property is a readable property of complexcontrols such as dropdown, listbox, tree, mainmenu, toolbar, and grid.It returns the itemids of all the selected items as I3ML. The value typefor this property is String.

[0348] The selectedrowi3ml property is a readable property of the gridcontrol. It returns the value of the selected row as specified in theI3ML. The value type for this property is String. Control Valid ValuesDefault Value Updateable grid *NA *NA no

[0349] The selectedtabsheet property is a readable property of thetabsheet control. It returns the name of the currently selected tabsheetas specified in the I3ML. The value type for this property is String.Control Valid Values Default Value Updateable tabset *NA *NA no

[0350] The selectedtabsheetid property is a readable property of thetabsheet control. It returns the index of the currently selectedtabsheet as specified in the I3ML. The value type for this property isString. Control Valid Values Default Value Updateable tabset *NA *NA no

[0351] The separator property specifies whether or not an item should betreated as a separator. The value type for this property is Boolean.Control Valid Values Default Value Updateable toolbutton true, falsenone no

[0352] The shiftkey property specifies whether or not the shift keyshould be used with the accelerator to execute a menu command. The valuetype for this property is Boolean. Control Valid Values Default ValueUpdateable menuitem true, false false yes

[0353] The showheaderdragimage property specifies whether or not theimage of a header should be displayed while dragging. The value type forthis property is Boolean. Control Valid Values Default Value Updateablespeedbar true, false true yes

[0354] Dependency

[0355] This property is applicable only if the headerdragdrop value isset to ‘true’.

[0356] The showitemdragimage property specifies whether or not the imageof an item should be displayed while dragging. The value type for thisproperty is Boolean. Control Valid Values Default Value Updateablespeedbar true, false false yes

[0357] Dependency

[0358] This property is applicable only if the diagdrop property hasbeen set to ‘true’.

[0359] The sorted property specifies whether or not the items in acomplex control should be sorted. The value type for this property isBoolean. Control Valid Values Default Value Updateable dropdown true,false false no listbox true, false false no

[0360] The spotintensity property specifies the coefficient of theinfluence on spot intensity of the light source. The value type for thisproperty is Integer. Control Valid Values Default Value Updateablebutton integer value greater 3 yes than zero

[0361] Dependency

[0362] This property is applicable only if the round property has beenset to ‘true’.

[0363] The spotsize property specifies the coefficient of the influenceon spot size of the light source. The value type for this property isInteger. Control Valid Values Default Value Updateable button integervalue greater 4 yes than zero

[0364] Dependency

[0365] This property is applicable only if the round property has beenset to ‘true’.

[0366] The stretch property specifies whether or not the picture in apicturepanel control should be stretched to fit in the control. Thevalue type for this property is Boolean. Control Valid Values DefaultValue Updateable picturepanel true, false false yes

[0367] The style property specifies whether the datetimepicker controlshould display a calendar or a spin control. This property can be setonly at the time of creation of the control. The value type for thisproperty is String. Control Valid Values Default Value Updateabledatetimepicker Calendar, spinner calendar no

[0368] The systemmenu property specifies whether or not the system menushould be displayed in a window control. The system menu comprises ofthe minimize, maximize, help, and cancel buttons. The value type forthis property is Boolean. Control Valid Values Default Value Updateablewindow true, false true yes

[0369] The taborder property specifies the order the focus should shiftto while the user is tabbing through an application. The first object inthe sequence has a value of “1” and flows through a cyclic consecutiveorder. The value type for this property is Integer.

[0370] Dependency

[0371] This property is applicable only if the tabstop property has beenset to ‘true’.

[0372] The tabstop property specifies whether or not the control shouldbe a part of the tabbing sequence. The tabbing sequence is the flowthrough the controls that occurs when the user presses the tab key overand over agair The value type for this property is Boolean.

[0373] The text property contains the default text to be displayed for acontrol. The value type for this property is String. Control ValidValues Default Value Updateable datetimepicker string value none yeseditbox string value none yes memo String value none yes numericeditString value none yes

[0374] The textalignment property specifies the text justification type.This property cannot be updated in the case of a check, numericedit,radio, or editbox control. The value type for this property is String.

[0375] The textcase property specifies the case that characters can beentered into an editbox or memo control. This property is applicableonly if the inputmask property is not specified in the case of aneditbox control. The value type for this property is String.

[0376] The textonright property specifies whether or not text should bedisplayed on the right or the bottom of the toolbutton. If this propertyis set to true, the text will be displayed on the right of thetoolbutton. The value type for this property is Boolean. Control ValidValues Default Value Updateable toolbar true, false false yes

[0377] The textoperation property specifies how to handle text value incase of an updation. In the case of an editbox control, this property isapplicable only if the inputmask has not been specified. The value typefor this property is String. Control Valid Values Default ValueUpdateable editbox append, prepend, replace yes replace memo append,prepend, replace yes replace

[0378] The textposition property specifies whether or not the textshould appear on the left or the right of the control. The value typefor this property is Boolean. Control Valid Values Default ValueUpdateable check left, right right yes radio left, right right yes

[0379] The top property specifies the y-coordinate with respect to thetop most point of the parent object. The value type for this property isInteger. The trailingtextcolor property specifies the color of the datesof preceding and following months. The value type for this property isString. Control Valid Values Default Value Updateable datetimepicker RGBvalue C0C0C0 yes

[0380] The underlinehotitem property specifies whether or not the itemunder stylus should be displayed underlined. The value type for thisproperty is Boolean. Control Valid Values Default Value Updateablespeedbar true, false false yes

[0381] The verticalalignment property specifies the alignment of thebutton image within a button control. The value type for this propertyis String. Control Valid Values Default Value Updateable button top,center, bottom center yes

[0382] The verticalangle property specifies the vertical direction oflight in degrees for a round button control. The value type for thisproperty is Integer. Control Valid Values Default Value Updateablebutton integer value 60 yes between −360 and 360

[0383] Dependency

[0384] This property is applicable only if the round property has beenset to ‘true’. The visible property specifies whether or not the controlshould be visible to the user on the screen. This feature is useful forhiding values that are used in calculations or for objects that are onlyshown based on different events. The value type for this property isBoolean.

[0385] The wantreturns property specifies whether or not the cursorshould move to the next line on pressing the Enter key. The value typefor this property is Boolean. Control Valid Values Default ValueUpdateable memo true, false false yes

[0386] The width attribute specifies the difference in pixels betweenthe right most part and the left most part of the control. The valuetype for this property is Integer.

[0387] The wordwrap property specifies whether or not the wordsexceeding the text space available in a memo control should move to thenext line. The value type for this property is Boolean. Control ValidValues Default Value Updateable memo true, false true no

[0388] Preferably, the attributes of an object are represented in theI3ML language by embedding code corresponding to the property elementwithin the code corresponding to an object element. Preferably, thesystem employs a single property element to define an attribute, suchthat the single property name can be used for any object desired to bedisplayed to the user. For example, one attribute that may be employedby the system is the position of an object relative to its parentobject. In the example shown below, the positioning information for the“GetID” button of FIG. 2 is given as four individual properties,illustrated below: <object name=“GetIDButton” parent=“NewUserGroupbox”class=“button”> <property name=“top” value=“25”/> <property name=“left”value=“59”/> <property name=“height” value=“25”/> <property name=“width”value=“75”/> </object>

[0389] According to this example, the “GetIDButton” resides within itsparent object “NewUserGroupbox” such that its top left corner ispositioned 59 pixels from the left side of its parent object and 25pixels from the top of its parent object. In addition, “GetIDButton” isalso 25 pixels high and 75 pixels wide. Advantageously, nearly allvisual elements support a top, left, height, and width attribute.

[0390] In general, different classes of objects support differentproperties. For example, button objects support a property referred toas “Caption”, which comprises the text that is shown on the button. Thecaption of the object, GetIDButton, is “Get an ID”. Other classes alsosupport captions, such as “NewUserGroupbox” in FIG. 2 which employs thecaption “New User?”. By contrast, there are some object types that donot support the caption attribute, such as editboxes. In the case of aneditbox, if text is desired to be shown next to the editbox, then alabel object is positioned next to the editbox.

[0391] While an entire application can be defined in a single I3ML file,the I3ML language may also be employed to provide just-in-timeapplications. In this case, parts of an application that are selected bya user are downloaded from server 12 to player module 18 for displayingto the user. For example, referring to FIG. 2, if the user clicks onbutton object 72 called “HelpButton”, a second window may pop up oninterface 20 providing the user with instructional information aboutlogging in. According to one embodiment, this new window has acorresponding set of I3ML data which defines it and which is included aspart of the original file of I3ML data, such that the corresponding setof I3ML data is employed to display the new window only upon the userclicking the button. Alternatively, the corresponding set of I3ML datawhich displays the second window having instructional information is nota part of the original file of I3ML data but instead resides in server12. In this case, the set of I3ML data corresponding to the secondwindow is required to be retrieved via a remote procedure call to server12 when user clicks the help button.

[0392] Batch file of I3ML data, or stream of I3ML data, is referred toas a “chunk”. When a chunk of new I3ML data is received from server 12by player module 18, the chunk is added to the set of existing I3ML datawhich is already being employed by player module 18. A chunk maycomprise, according to one embodiment of the invention, a collection of“inserts”, “updates” and “deletes” to the I3ML file.

[0393] For example, as previously mentioned, a set of I3ML data maydefine a button referred to as “GetIDButton”. In order to insert thisset of I3ML data into a file of I3ML data which is currently beingemployed by player module 18 (and to thereby display the button on userinterface 20), the following insert command may be received by theplayer module: <insert> <object name=“GetIDButton”parent=“NewUserGroupbox” class=“BUTTON”> <property name=“Top”value=“25”/> <property name=“Left” value=“59”/> <property name=“Height”value=“25”/> <property name=“Width” value=“75”/> </object> </insert>

[0394] Similarly, objects can also be deleted from the set of I3ML datawhich is currently being employed by player module 18. In this manner,an object which has been displayed on the user interface 20 will beremoved from user interface 20. For example, after a user has logged in,the LoginWindow object shown in FIG. 2 is no longer desired to bedisplayed to the user. Instead, the window, and all of the displayedobjects for which the LoginWindow object is a parent, are deleted fromthe I3ML data set. The following delete command may be received by theplayer module: <delete> <object name=“LoginWindow”> </object> </delete>

[0395] Updates to the file of I3ML data that is being employed by playermodule 18 may also be performed. For instance, any attribute of anobject can be changed by employing an update command. By way of example,the Left attribute of the “GetIDButton” object, if changed from 59 to19, will cause the button to move 40 pixels to the left. The followingillustrates how such an update command may be employed to facilitatethis change to the user interface 20: <update> <objectname=“GetIDButton”> <property name=“Left” value=“19”/> </object></update>

[0396] As previously mentioned above, I3ML data is also employed toassociate actions, events, etc. to objects that are displayed in a userinterface 20. An action is a function that is performed by system 10when a particular event occurs. An event is a user interaction with theapplication. Thus, the system of the present invention can employ I3MLdata in order to facilitate the performance of an action when an eventoccurs. For example, “LeftClick” may refer to an event whereby the userclicks the left mouse button. In order for this event to be associatedwith a particular object, the pointer which corresponds to the mouseshould be pointing to the object when the event (e.g.—the clicking bythe user of the left mouse button) occurs. Some other exemplary. eventsare shown in Table 1.4: TABLE 1.4 Events RightClick DoubleClickLeftClick SelChange DownArrow LoseFocus UpArrow EnterKey MiddleClickWindowClose F1-F12 MouseEnter WindowLoad GetFocus MouseExit CollapseTreeLeftArrow RightArrow ExpandTree

[0397] For each of the events listed in Table 1.4, a description of theevents is discussed briefly below. Some of these events are discussed ingreater detail herein. Generally, DblClickLeft is the event of the userclicking the left mouse button twice in succession over the object.DownArrow is the event of the user depressing the down arrow key whenthe focus is on a control. EnterKey is the event of the user depressingthe enter key when the focus is on a control.

[0398] F1 is the event of the user depressing the F1 key when the focusis on a control. F2 through F12 are the events of the user depressingthe F2 through F12 key, respectively, when the focus is on a control.GetFocus is the event of the user selecting the object by either tabbingto or left-clicking the control.

[0399] LeftArrow is the event of the user depressing the left arrow keywhen the focus is on a control. LeftClick is the event of the userclicking the left mouse button on the object. LoseFocus is the event ofthe cursor leaving the object, either by tabbing off of it to the nextcontrol or clicking somewhere else in the application. MiddleClick isthe event of the user clicking the middle mouse button on the object.MouseEnter is the event of the user moving the cursor over the object.MouseExit is the event of the user moving the mouse off of the object.RightArrow is the event of the user depressing the right arrow key whenthe focus is on a control. RightClick is the event of the user clickingthe right mouse button on the object. SelChange is the event of the userchanging a selection. The leftclick action is also fired with thisaction. UpArrow is the event of the user depressing the up arrow keywhen the focus is on a control. WindowClose is the event of the userclosing a window. WindowLoad is the event of the user opening a window.CollapseTree is the event of the user collapsing a node in a treecontrol by clicking the left button of the mouse or pressing the leftarrow key. ExpandTree is the event of the user expanding a node in atree control by clicking the left button of the mouse or pressing theright arrow key.

[0400] As previously mentioned above, the purpose of associating eventsto an object is to facilitate the performance of an action when theevent takes place. The actions that are associated with an event and anobject are represented in I3ML data by the employment of a “method”element embedded within the object. For example, referring to theembodiment shown in FIG. 2, if the user clicks the left mouse buttonwhen the, mouse is pointing to the “CancelButton” object, the loginwindow will close. This association of the action of closing the loginwindow when the event of the user left clicking on the “Cancel” buttonis created by employing the following set of I3ML data: <objectname=“CancelButton” parent=“LoginWindow” class=“button”> <propertyname=“Caption” value=“Cancel”/> <property name=“Height” value=“25”/><property name=“Left” value=“82”/> <property name=“Top” value=“152”/><property name=“Width” value=“50”/> <method name=“LeftClick”value=“CloseWindow”/> </object>

[0401] It is noted that, in accordance with one embodiment of theinvention, the “CloseWindow” action is not a command to close thewindow. Instead, “CloseWindow” may refer to the name of a local action.Generally, there are two kinds of actions which may be performed bysystem 10, namely local actions and remote actions. A local actionrefers to an action that is performed locally in player module 18. Forexample, when the user left clicks on the “CancelButton” object asdiscussed above, the login window closes, e.g.—player module 18 makes alocal procedure call to a local action called “CloseWindow”.

[0402] According to one embodiment of the invention, local actions aredefined in player module 18, which is configured to perform the localaction without the need for the player module to retrieve the code fromanother source. Multiple categories of local actions may be employed,such as “Local.Math”, “Local.DateTime”, “Local.Process”, and“Local.String”.

[0403]FIG. 6(a)-(bb) provides examples of I3ML code for each of thebelow-listed processes that may be performed by a call to a Local.Mathfile. Similarly, FIG. 7(a)-(ee) provides examples of I3ML code for eachof the below-listed processes that may be performed by a call to aLocal.Datetime file. FIG. 8(a)-(g) provides examples of I3ML code foreach of the below-listed processes that may be performed by a call to aLocal.Process file. FIG. 9(a)-(o) provides examples of I3ML code foreach of the below-listed processes that may be performed by a call to aLocal.String file. TABLE 1.5 Local.Math add log tanh subtract cos roundmultiply sin roundup divide tan rounddown mod acos sqrt max asin ceilingmin atan floor abs cosh exp log10 sinh average

[0404] TABLE 1.6 Logical Functions succeedifgt succeedifge succeedifltsucceedifle succeedifne succeedifeq

[0405] The Add method takes one or more inputs, adds the values, andreturns the sum. This method ignores any blank values. This method hasparameters named param1 and param2, which are both float values, and itreturns a result that is a float value.

[0406]FIG. 6(a) shows an example of an I3ML file for this method.

[0407] The Subtract method takes two inputs, subtracts the second fromthe first, and returns the difference. This method has parameters namedparam1 and param2, which are both float values, and it returns a resultthat is a float value. FIG. 6(b) shows an example of an I3ML file forthis method.

[0408] The Multiply method takes two or more inputs, multiplies thevalues and returns the product This method ignores any blank values.This method has parameters named param1 and param2, which are both floatvalues, and it returns a result that is a float value. FIG. 6(c) showsan example of an I3ML, file for this method.

[0409] The Divide method takes two inputs, divides the first value fromthe second, and returns the quotient. This method has parameters namedparam1 and param2, which are both float values, and it returns a resultthat is a float value. FIG. 6(d) shows an example of an I3ML file forthis method.

[0410] The Mod method takes two inputs, divides the first value from thesecond, and returns the remainder. This method has parameters namedparam1 and param2, which are both float values, and it returns a resultthat is a numeric value. FIG. 6(e) shows an example of an I3ML file forthis method.

[0411] The Max method takes any number of inputs and returns the maximumnumber from the list. This method has parameters named param1 andparam2, which are both float values, and it returns a result that is afloat value. FIG. 6(f) shows an example of an I3ML file for this method.

[0412] The Min method takes any number of inputs and returns the minimumnumber from the list. This method has parameters named param1 andparam2, which are both float values, and it returns a result that is afloat value. FIG. 6(g) shows an example of an I3ML file for this method.

[0413] The Abs method takes one input and returns the absolute(positive) value of the number. This method has a parameter named param1which is a float value, and it returns a result that is a float value.FIG. 6(h) shows an example of an I3ML file for this method.

[0414] The Log10 method takes one input and returns the log (base10)value of the number. This method has a parameter named param1 which is afloat value, and it returns a result that is a float value. FIG. 6(i)shows an example of an I3ML file for this method.

[0415] The Log method takes one input and returns the log (base e) valueof the number. This method has a parameter named param1 which is a floatvalue, and it returns a result that is a float value. FIG. 6(j) shows anexample of an I3ML file for this method.

[0416] The Cos method takes one input and returns the cosine value ofthe number. This method has a parameter named param1 which is a floatvalue, in radians, and it returns a result that is a float value. FIG.6(k) shows an example of an I3ML file for this method

[0417] The Sin method takes one input and returns the sine value of thenumber. This method has a parameter named param1 which is a float value,in radians, and returns a result that is a float value. FIG. 6(l) showsan example of an I3ML file for this method.

[0418] The Tan method takes one input and returns the tangent value ofthe number. This method has a parameter named param1 which is a floatvalue, in radians, and it returns a result that is a float value. FIG.6(m) shows an example of an I3ML file for this method.

[0419] The Acos method takes one input and returns the arc cosine valueof the number. This method has a parameter named param1 which is a floatvalue, in radians, and it returns a result that is a float value. FIG.6(n) shows an example of an I3ML file for this method.

[0420] The Asin method takes one input and returns the arc sine value ofthe number. This method has a parameter named param1 which is a floatvalue, in radians, and it returns a result that is a float value. FIG.6(o) shows an example of an I3ML file for this method.

[0421] The Atan method takes one input and returns the arc tangent valueof the number. This method has a parameter named param1 which is a floatvalue, in radians, and it returns a result that is a float value. FIG.6(p) shows an example of an I3ML file for this method.

[0422] The Cosh method takes one input and returns the hyperbolic cosinevalue of the number. This method has a parameter named param1 which is afloat value, in radians, and returns a result that is a float value.FIG. 6(q) shows an example of an I3ML file for this method.

[0423] The Sinh method takes one input and returns the hyperbolic sinevalue of the number. This method has a parameter named param1 which is afloat value, in radians, and returns a result that is a float value.FIG. 6(r) shows an example of an I3ML file for this method.

[0424] The Tanh method takes one input and returns the hyperbolictangent value of the number. This method has a parameter named param1which is a float value, in radians, and it returns a result that is afloat value. FIG. 6(s) shows an example of an I3ML file for this method.

[0425] The Round method takes two inputs and rounds off the first valueto the number of decimal places specified as the second value. Thismethod has parameters named param1 and param2, which are a float valueand a numeric value, respectively, and returns a result that is a floatvalue. FIG. 6(t) shows an example of an I3ML file for this method.

[0426] The Roundup method takes two inputs and rounds off float value tothe number of decimal places specified as second parameter. The value ofa rounded digit will always be increased irrespective of the next digit.This method has parameters named param1 and param2, which are a floatvalue and a numeric value, respectively, and returns a result that is afloat value. FIG. 6(u) shows an example of an I3ML file for this method.

[0427] The Rounddown method takes two inputs and rounds off float valueto the number of decimal places specified as second parameter. The valueof a rounded digit will never increase irrespective of the next digit.This method has parameters named param1 and param2, which are a floatvalue and a numeric value, respectively, and returns a result that is afloat value. FIG. 6(v) shows an example of an I3ML file for this method.

[0428] The Sqrt method takes one input and returns the square rootvalue. This method has parameters named param1, which is a float valuethat is positive, and returns a result that is a float value. FIG. 6(w)shows an example of an I3ML file for this method.

[0429] The Ceiling method takes one input and returns the nearestinteger greater than the value specified. This method has a parameternamed param1 which is a float value, and returns a result that is anumeric value. FIG. 6(x) shows an example of an I3ML file for thismethod.

[0430] The Floor method takes one input and returns the nearest integerless than the value specified. This method has a parameter named param1which is a float value, and returns a result that is a numeric value.FIG. 6(y) shows an example of an I3ML file for this method.

[0431] The Exp method takes one input and raises it to the power offloat value specified. This method has a parameter named param1 which isa float value, and returns a result that is a float value. FIG. 6(z)shows an example of an I3ML file for this method.

[0432] The Average method takes any number of inputs and returns theaverage. This method ignores any blank values. This method hasparameters named param1 and param2, which are both float values, and itreturns a result that is a float value. FIG. 6(aa) shows an example ofan I3ML file for this method.

[0433] All of the logic functions detailed below, have twoparameters,—named param1 and param2—which are both float values andreturn results that are Boolean. FIG. 6(bb) shows an example of an I3MLfile for performing a logic function

[0434] The succeedifgt method takes two inputs and returns true if firstnumber is greater than second, else returns false.

[0435] The succeedifge method takes two inputs and returns true if firstnumber is greater than or equal to second, else returns false.

[0436] The succeediflt method takes two inputs and returns true if firstnumber is less than second, else returns false.

[0437] The succeedifle method takes two inputs and returns true if firstnumber is less than or equal to second, else returns false.

[0438] The succeedifne method takes two inputs and returns true if firstnumber is not equal to the second, else returns false.

[0439] The succeedifeq method takes two inputs and returns true if firstnumber is equal to the second, else returns false. TABLE 1.7Local.Datetime current second dateadd minute datesub hour year 24hourmonth ampm day dayofweek monthname dayofweekname longmonthnamedayofweeklongname

[0440] The current method returns current date or time information inthe specified format. FIG. 7(a) shows an example of an I3ML file forthis method.

[0441] The dateadd method adds a specified number of days to the datesupplied in specified format. FIG. 7(b) shows an example of an I3ML filefor this method.

[0442] The datesub method subtracts a specified number of days from thedate supplied in specified format. FIG. 7(c) shows an example of an I3MLfile for this method.

[0443] The year method returns the year from the date supplied inspecified format. FIG. 7(d) shows an example of an I3ML file for thismethod.

[0444] The month method returns the numeric value of the month from thedate supplied in specified format. FIG. 7(e) shows an example of an I3MLfile for this method.

[0445] The day method returns the numeric value of the day of the monthfrom the date supplied in specified format. FIG. 7(f) shows an exampleof an I3ML file for this method.

[0446] The monthname method returns the first three characters of themonth from the date supplied in specified format. FIG. 7(g) shows anexample of an I3ML file for this method.

[0447] The longmonthname method returns the complete name of the monthfrom the date supplied in specified format. FIG. 7(h) shows an exampleof an I3ML file for this method.

[0448] The second method returns the seconds value from the datesupplied in specified format. FIG. 7(i) shows an example of an I3ML filefor this method.

[0449] The minute method returns the minutes value from the datesupplied in specified format. FIG. 7(j) shows an example of an I3ML filefor this method.

[0450] The hour method returns the hour value from the date supplied inspecified format. FIG. 7(k) shows an example of an I3ML file for thismethod.

[0451] The 24 hour method returns the hour value in 24-hour format fromthe date supplied in specified format. FIG. 7(l) shows an example of anI3ML file for this method.

[0452] The ampm method returns the AM/PM value from the date supplied inspecified format. FIG. 7(m) shows an example of an I3ML file for thismethod.

[0453] The dayofweek method returns the numeric day of the week valuefrom the date supplied in specified format. FIG. 7(n) shows an exampleof an I3ML file for this method.

[0454] The dayofweekname method returns first three characters of theday of the week from the date supplied in specified format. FIG. 7(o)shows an example of an I3ML file for this method.

[0455] The dayofweeklongname method returns the complete name of the dayof the week from the date supplied in specified format. FIG. 7(p) showsan example of an I3ML file for this method. TABLE 1.8 Local.Processclose cancel messagebox terminate copy setfocus applychunk

[0456] The close method closes the specified window and stops runningany methods associated with the window and its child controls. Multiplewindows can be closed in one method determined by the number ofparameters. The values of the ‘window’ parameters of the ‘close’ methoddetermine the windows that should be closed when the action is executed.It has parameters which are named window. FIG. 8(a) shows an example ofan I3ML file for this method.

[0457] The cancel method cancels the action specified in the parameterlist. It has parameters named param1, param2, etc., which are actionnames. FIG. 8(b) shows an example of an I3ML file for this method.

[0458] The messagebox method accepts string values as ‘message’ and‘caption’ parameters. The ‘message’ string is displayed in a messagebox,and the ‘caption’ value is displayed as a caption. None of theseparameters have any default values and if they are not specified, thentheir value is taken as null. FIG. 8(c) shows an example of an I3ML filefor this method.

[0459] The terminate method terminates the whole application. FIG. 8(d)shows an example of an I3ML file for this method.

[0460] The copy method copies a property or a constant value from onecontrol to another. This method can have a variable number of parametersnamed param1, param2, etc., which are string constants. FIG. 8(e) showsan example of an I3ML file for this method.

[0461] The setfocus method sets the focus on a specified control. FIG.8(f) shows an example of an I3ML file for this method.

[0462] The applychunk method executes a specified chunk. The name of thechunk to be executed is supplied using the ‘name’ parameter. FIG. 8(g)shows an example of an I3ML file for this method. TABLE 1.9 Local.Stringtoupper replace tolower concat trimleadingspaces find trimtrailingspacescfind trimspaces length right compare left ccompare mid

[0463] The toupper method converts the supplied string to upper case.FIG. 9(a) shows an example of an I3ML file for this method.

[0464] The tolower method converts the supplied string to lower case.FIG. 9(b) shows an example of an I3ML file for this method.

[0465] The trimleadingspaces method removes the spaces from the extremeleft of the supplied string. FIG. 9(c) shows an example of an I3ML filefor this method.

[0466] The trimtrailingspaces method removes the spaces from the extremeright of the supplied string. FIG. 9(d) shows an example of an I3ML filefor this method.

[0467] The trimspaces method removes both leading and trailing spacesfrom the supplied spring. FIG. 9(e) shows an example of an I3ML file forthis method.

[0468] The right method extracts a specified number of characters fromthe extreme right of the supplied string. It has two parameters namedparam1 and param2, which are a string and an integer, respectively. FIG.9(f) shows an example of an I3ML file for this method.

[0469] The left method extracts a specified number of characters fromthe extreme left of the supplied string. It has two parameters namedparam1 and param2, which are a string and an integer, respectively. FIG.9(g) shows an example of an I3ML file for this method.

[0470] The mid method extracts a specified number of characters from aspecific position in the supplied string. It has three parameters namedparam1, param2 and param3, which are a string, an integer, and aninteger, respectively. FIG. 9(h) shows an example of an I3ML file forthis method.

[0471] The replace method is used for replacing specific characters in astring with other supplied characters. This method accepts fourparameters. The string in which characters have to be replaced isspecified as ‘parameter 1’. The second parameter accepts an integervalue that indicates the start position in the string where charactersneed to be replaced. The end position is indicated by the integer valueof the third parameter. Finally, the string of characters that need tobe inserted in place of the original characters is specified as‘parameter 4’. FIG. 9(i) shows an example of an I3ML file for thismethod.

[0472] The concat method joins two supplied strings. FIG. 9(j) shows anexample of an I3ML file for this method

[0473] The find method accepts two parameters. It searches for thestring supplied as ‘parameter 2’within another string that has beenspecified as the first parameter. It returns the position of the secondstring within the first string. This method ignores case while comparingthe two strings. FIG. 9(k) shows an example of an I3ML file for thismethod.

[0474] The cfind method accepts two parameters. It searches for thestring supplied as ‘parameter 2’within another string that has beenspecified as the first parameter. It returns the position of the secondstring within the first string. This method ignores case while comparingthe two strings. FIG. 9(l) shows an example of an I3ML file for thismethod.

[0475] The length method returns the number of characters in thesupplied string. FIG. 9(m) shows an example of an I3ML file for thismethod.

[0476] The compare method compares two supplied strings and returns trueif they are equal else returns false. This method ignores case whilecomparing the strings. This method is generally used in sequentialgroups. If the function returns true and the action succeeds, then thenext action in the group is executed, else the onfail action of thegroup is executed. FIG. 9(n) shows an example of an I3ML file for thismethod.

[0477] The compare method compare two supplied strings and returns trueif they are equal else returns false. This method performs acase-sensitive comparison. Like the ‘compare’ method, this method isgenerally used in sequential groups. If the function returns true andthe action succeeds, then the next action in the group is executed, elsethe onfail action of the group is executed. FIG. 9(o) shows an exampleof an I3ML file for this method.

[0478] Each of these local actions is defined in a I3ML data file whichis received by player module 18 upon the occurrence of an event that isassociated with the local action. For instance, in the example citedabove, the “CloseWindow” action, which performs a local action thatcloses the “LoginWindow” object, may be defined as (abridged for thepurpose of illustration): <action name=“CloseWindow”server=“Local.Process” target=“close” method=“I3ML”> <sendfrom=“LoginWindow”/> </action>

[0479] A remote action, on the other hand, refers to an action that isperformed by a separate device, such as server 12. This server mayreside in the same device as player module 18, but may also resideseparately from player module 18 as shown in FIG. 1. Like the localactions, remote actions can also be illustrated with reference to FIG.2. For instance, when the user left clicks on the “LoginButton” object,the ID and password information that the user has typed into editboxes60 and 64 are sent to server 12 for authentication. In this embodiment,the transmission to server 12 of the text from editboxes 60 and 64 forauthentication constitutes a remote action. In this example, the “Login”action, which performs a remote action that transmits the contents ofthe editboxes for authentication, may be defined as (abridged for thepurpose of illustration): <action name=“Login” server=“LoginServer”target=“/I3ML/default.asp” method=“post”> <send from=“IDEditbox”property=“Text” to=“user”/> <send from=“PasswordEditbox” property=“Text”to=“password”/> <send constant=“Login” to=“name”/> </action>

[0480] As shown above, in order to define a remote action, a server isdefined. The server which is defined in order that player module 18knows where to retrieve the remote action. Generally, the set of I3MLdata which calls a server comprises a hostname, a port on that host(typically 80), and a protocol (typically HTTP). In the example citedabove, a server called “LoginServer” that is remotely called by the“Login” action to handle the authentication may be defined as:

<server name=“LoginServer” protocol=“HTTP” host=“www.cokinetic.com”port=“80”/>

[0481] In addition to naming the server, a remote action call may alsoname a target (i.e. service method) on that server. It may also nameparameters and return values, mapping the names as defined in the I3MLlanguage to the names as defined in the service. In the example above,the contents of the editbox IDEditbox are sent to the service parameternamed “user”.

[0482] Thus, because each object has associated therewith differentevents which trigger actions, the occurrence of the same event inconnection with different objects will have different results.Conversely, the same action may result from the occurrence of differentevents. For example, left clicking the HelpButton and pressing F1 aredifferent events that may be associated with the same action, namelycalling up a Help screen.

[0483] According to one embodiment of the invention, instead of beinglinked to a single action, an event may be linked to a group of actions.A group comprises more than one action which is performed upon theoccurrence of an event. One type of group is referred to as a“sequential action group.” In a sequential action group, upon theoccurrence of a triggering event, each action in the group is runsequentially, e.g.—one at a time. Another type of group is referred toas a “parallel action group”. In a parallel action group, player module18 runs some or all of the associated actions in parallel threads,e.g.—simultaneously.

[0484]FIG. 10 is a block diagram that illustrates some of the componentsof player module 18, in accordance with one embodiment of the presentinvention. The manner in which these components are employed by playermodule 18 is described in greater detail below in connection with theflowchart of FIG. 11. Generally, player module 18 comprises a centralprocessor module 1801 which is coupled to each of the other modules andwhich controls the operations thereof. Player module 18 also comprisescharacter buffer 1802, which stores a file of I3ML data to be run byplayer module 18. Parser module 1804 is coupled to character buffer 1802for processing the file of I3ML data. Error log file 1806 stores errorsdetected by parser module 1804. Message map module 1808 storesassociation between events and actions.

[0485] Action queue storage module 1810 stores a queue of actions to beperformed by player module 18. Coupled to action queue storage module1810 is action observer module 1812 which observes when a new action hasbeen added to the queue. Action handler module 1814 handles theperformance of an action in conjunction with physical action module1816.

[0486]FIG. 11 is a flowchart that illustrates the steps that areperformed by player module 18 and some of the other components of system10, in accordance with one embodiment of the present invention, in orderto process and display a user interface. At step 500, player module 18receives an input file comprising I3ML data. According to oneembodiment, this file of I3ML data may be supplied as a parameter to theplayer.exe. In case a particular file of I3ML data is not specified,player module 18 prompts the user to enter a file name by displaying tothe user a “file-open dialog box”. Once player module 18 has the name ofa file of I3ML data to run, player module 18 opens the file using theWindows system API and stores the contents of the file in characterbuffer 1802.

[0487] At step 501, character buffer 1802, which was populated in step500, is provided to parser module 1804. Among other things, parsermodule 1804 is configured to validate the data in the I3ML file.Specifically, parser module 1804 is configured to determine whether thesyntax employed in the file of I3ML data is in accordance with correctXML syntax. According to a preferred embodiment of the invention, parsermodule 1804 employs the open source Apache's Xerces parser module tovalidate the file of I3ML data. If parser module 1804 determines thatthe syntax of the I3ML data file is not in accordance with correct XMLsyntax, player module 18 generates a message-box that shows the user thelocation of the error, and logs the error into error log file 1806.

[0488] Once player module 18 determines that the syntax of the I3ML datafile is in accordance with correct XML syntax, player module 18 proceedsto step 502. At step 502, parser module 1804 of player module 18 parsesthe I3ML data file in order to generate a DOM tree structure.

[0489] At step 503, player module 18 traverses the tree structuregenerated in step 502 in order to generate run time logical objects forvarious I3ML data elements present in the DOM tree. These objectsconstitute the logical interpretation of the I3ML data elements and forma logical layer in player module 18. The logical objects maintain mapdata structures for maintaining the various attributes specified in theDOM tree.

[0490] At step 504, player module 18 generates a I3ML data set. The I3MLdata set comprises the references to the logical objects that werecreated in step 503. According to one embodiment, player module 18 maystore various collections of references to the logical objects, therebygenerating a plurality of I3ML data sets.

[0491] Once the DOM tree is completely traversed, player module 18proceeds to step 505. At step 505, a user interface, comprising theinterface items associated with the logical objects stored in the I3MLdata set, is displayed for display to the user. Specifically, parsermodule 1804 requests the I3ML data set to generate the user interface bysynchronizing the logical objects stored in the I3ML data set with theinterface items that are displayed to and that interact with the user.Data regarding each interface item, such as class, coordinates, color,appearance etc, is employed to display the interface item.

[0492] Once the user interface is presented to the user, player module18 employs a Windows message loop and waits for an event to occur. Atstep 506, an event occurs. As previously discussed, the event whichoccurs at step 506 may be any Windows event, such as “LeftMouseClick”,“GotFocus”, “LooseFocus”, etc.

[0493] At step 507, the Windows events are associated to the interfaceitems displayed to the user by employing message map module 1808.Message map module 1808 comprises message maps. Each message mapcomprises messages that associate events to actions that are to beperformed when the event occurs. At step 508, player module 18 transmitsa message to its corresponding object in the logical layer.Specifically, player module 18 stores the references to the actionsspecified in the I3ML data to be executed at the occurrence of theevents.

[0494] At step 509, player module 18 determines whether there exists anaction to be performed when the event specified in step 506 occurs.Specifically, player module 18 examines the message map of theappropriate object for a definition of an action. If player module 18determines that an action is defined, player module 18 proceeds to step510. At step 510, player module 18 adds the action name, and the name ofthe object to which it is associated, to an action queue stored inaction queue storage module 1810.

[0495] At step 511, action observer module 1812 polls action queuestorage module 1810 to determine whether a new action has been added tothe action queue. According to one embodiment of the invention, actionobserver module 1812 is configured to automatically poll action queuestorage module 1810 at periodic time intervals for this purpose. If anaction is found in the action queue, action observer module 1812proceeds to step 514, explained below. According to one embodiment, atime interval may be set to insure that an action received by actionqueue storage module 1810 is performed within the time interval. In thiscase, if the action has not been performed within the set time interval,action observer module 1812 automatically proceeds to step 514 also.

[0496] If no action is present in action queue storage module 1810,then, at step 513, action observer module 1812 goes into a wait state toavoid unnecessary CPU utilization. However, if it is determined at step512 that an action is pending in action queue storage module 1810, thenat step 514, the action is forwarded to action handler module 1814 forexecution.

[0497] At step 514, action handler module 1814 determines whether thereceived action is a single action or an action group. If the receivedaction is a single action, then at step 516, action handler module 1814requests the definition of the action from the I3ML data set. If thereceived action is an action group, then at step 515, action handlermodule 1814 requests the definition of each action in the action groupfrom the I3ML data set. As previously discussed, an action group is acombination of single actions which may be executed sequentially (oneafter the other) or in parallel (all at once). Furthermore, an actiongroup may comprise “if” constructs for conditional execution of a singleaction in the action group (e.g.—only if a condition is satisfied doesthe single action get executed).

[0498] Upon completion of step 516, an action is transmitted to physicalaction module 1816. At step 517, physical action module 1816 determinesthe call type associated with the action. According to variousembodiments, the call type associated with the action may be SOAP, GETor POST. Depending on the call type determined, physical action module1816 then creates a data package corresponding to the action.

[0499] At step 518, physical action module 1816 also determines whetherthe action is a local action or a remote action. If physical actionmodule 1816 determines that the action is a local action, then playermodule 18 proceeds to step 524. At step 524, physical action module 1816transmits the package that was created at step 517 to a local server,such as local server 16 illustrated in FIG. 1. At step 525, the localserver processes the package, and at step 526, transmits a resultpackage back to physical action module 1816. The result package isconverted to I3ML data, which is employed by player module 18 to bedisplayed to the user. For example and as previously discussed, thelocal server may be employed, according to one embodiment, to addnumbers from two editboxes of the interface—in this case, the localserver may add the two numbers at step 525 and transmit back to physicalaction module 1816 the sum of the two numbers to be displayed in a thirdbox of the interface. Other examples of local actions are a localmessage box or a local copy method which copies the contents of oneinterface item to another interface item.

[0500] If physical action module 1816 determines that the action is aremote action, then player module 18 proceeds to step 520. At step 520,physical action module 1816 transmits the package that was created atstep 517 to a remote server, such as server 12 illustrated in FIG. 1. Atstep 520, the remote server generates an appropriate request (e.g.—SOAP,GET or POST) depending on the particular data source 26 which isspecified in the package. Advantageously, the request is generated bythe connectors 24, which, as previously discussed, are specificallyconfigured to transform a request for data in XML format to a requestwhich is comprehensible to data source 26. At step 521, the request istransmitted by remote server 12 to data source 26. At step 522, remoteserver 12 receives back from data source 26 a response to the request.At step 523, connectors 24 convert the result package back into XML andtransmits the XML data to XSL transform module 22. At step 527, the datais converted into I3ML data and is transmitted to action handler module1814. At this point, player module 18 returns to step 501 in order tovalidate the I3ML data and to display the corresponding I3ML data to theuser via the interface.

[0501] In case the execution of an action fails for any reason, actionhandler module 1814 determines whether the action has an “OnFail” actiondefined. If an “OnFail” action is defined, action handler module 1814executes this action, or else displays a message box advising the userthat the action has failed. In the event that an action group is handledby player module 18, the “OnFail” action is executed whenever any of theactions that comprise the action group fails to execute. Advantageously,action handler module 1814 may also determine whether the action beingprocessed is a recursive action, in which case the action is added againto the action queue in action queue storage module 1810.

[0502] The operation of the system, in accordance with one embodiment ofthe present invention, is now illustrated in connection with theinterface shown in FIG. 13. Specifically, FIG. 13 illustrates aninterface that may be created by a user in connection with a packagetracking system, which employs data from a company such as FEDEX™ oranother shipping company. Interface 1300 is a window that may be createdusing the I3ML designer module having a first field 1302 used to input aFEDEX tracking number, and a second field 1306 providing the location ofa package. A button 1304 causes the I3ML player module to obtain thelocation of the package when the tracking number is provided, and todisplay it in field 1306.

[0503] The interface 1300 is implemented by the I3ML programmer linkingan action corresponding to the FEDEX SOAP service, such that when a userfills in field 1302 and clicks button 1304, the FEDEX database isaccessed. Once the user clicks on button 1304, the player module makes aproperly formatted SOAP call to FEDEX's package tracking system. TheI3ML player module transmits the tracking number entered by the user toFEDEX and transmits the location of the package as reported by FEDEXinto location field 1306. Although this example merely illustrates theretrieval of data for a single package location, the present inventioncontemplates that any number of packages could be tracked in thisfashion, enabling simplified inventory tracking.

[0504] A set of I3ML which may be employed to generate interface 1300,and which provides the operation as described above, may be illustratedas such: <iii version=“0.9.1”><insert><header name=“”/><servername=“FEDEX” protocol=“HTTP” host=“services.xmethods.net” port=“80”timeout=“”/><action name=“getlocation” server=“FEDEX”target=“/perl/soaplite.cgi” blockgui=“true” method=“SOAP”uri=“urn:xmethodsFedEx” soapservice=“getStatus”soapaction=“urn:xmethodsFedEx#getStatus”><send from=“ebTrackingNumber”property=“Text” attributes=“xsi:type=&quot;xsd:string&quot;”to=“trackingNumber”/><receive to=“ebLocation” property=“Text”from=“return”/></action><object name=“Window1” parent=“”class=“Window”><property name=“BorderStyle” value=“Sizeable”/><propertyname=“Caption” value=“FEDEX”/><property name=“Height”value=“175”/><property name=“Left” value=“258”/><property name=“Top”value=“89”/><property name=“Width” value=“268”/><propertyname=“MaximizeButton” value=“true”/><property name=“MinimizeButton”value=“true”/><property name=“SystemMenu” value=“true”/></object><objectname=“ebTrackingNumber” parent=“Window1” class=“EditBox”><propertyname=“Caption” value=“EditBox1”/><property name=“Left”value=“110”/><property name=“Top” value=“24”/><property name=“Height”value=“21”/><property name=“Width” value=“121”/><property name=“Enabled”value=“true”/><property name=“TabStop” value=“true”/><propertyname=“Visible” value=“true”/><property name=“Color”value=“FFFFFF”/><property name=“InsertMode” value=“true”/><propertyname=“MaxLength” value=“0”/><property name=“Password”value=“false”/><property name=“ReadOnly” value=“false”/><propertyname=“Scroll” value=“true”/><property name=“TextAlignment”value=“Left”/><property name=“TextCase” value=“Mixed”/><propertyname=“TextOperation” value=“Replace”/></object><object name=“ebLocation”parent=“Window1” class=“EditBox”><property name=“Caption”value=“EditBox2”/><property name=“Left” value=“109”/><propertyname=“Top” value=“84”/><property name=“Height” value=“21”/><propertyname=“Width” value=“121”/><property name=“Enabled”value=“true”/><property name=“TabStop” value=“true”/><propertyname=“Visible” value=“true”/><property name=“Color”value=“FFFFFF”/><property name=“InsertMode” value=“true”/><propertyname=“MaxLength” value=“0”/><property name=“Password”value=“false”/><property name=“ReadOnly” value=“false”/><propertyname=“Scroll” value=“true”/><property name=“TextAlignment”value=“Left”/><property name=“TextCase” value=“Mixed”/><propertyname=“TextOperation” value=“Replace”/></object><object name=“Button1”parent=“Window1” class=“Button”><property name=“Caption” value=“GetLocation”/><property name=“Left” value=“125”/><property name=“Top”value=“54”/><property name=“Height” value=“25”/><property name=“Width”value=“75”/><property name=“Enabled” value=“true”/><propertyname=“TabStop” value=“true”/><property name=“Visible”value=“true”/><property name=“DefaultButton” value=“false”/><propertyname=“HorizontalAlignment” value=“false”/><property name=“ImageOffset”value=“false”/><property name=“Round” value=“false”/><propertyname=“VerticalAlignment” value=“false”/><method name=“LeftClick”action=“getlocation”/></object><object name=“Label1” parent=“Window1”class=“Label”><property name=“Caption” value=“TrackingNumber”/><property name=“Left” value=“5”/><property name=“Top”value=“28”/><property name=“Height” value=“13”/><property name=“Width”value=“96”/><property name=“Enabled” value=“true”/><propertyname=“TabStop” value=“true”/><property name=“Visible”value=“true”/><property name=“TextAlignment”value=“Left”/></object><object name=“Label2” parent=“Window1”class=“Label”><property name=“Caption” value=“Location”/><propertyname=“Left” value=“6”/><property name=“Top” value=“92”/><propertyname=“Height” value=“11”/><property name=“Width” value=“50”/><propertyname=“Enabled” value=“true”/><property name=“TabStop”value=“true”/><property name=“Visible” value=“true”/><propertyname=“TextAlignment” value=“Left”/></object></insert>

[0505]FIG. 14 illustrates another interface that may be created by auser in connection with a language translation system, which employsdata from a company such as ALTAVISTA™ or another language translationservice provider. Interface 1400 is a window that may be created usingthe I3ML designer module having a first field 1402 used to input a wordor phrase in a first language, and a second field 1408 providing thetranslation of that word or phrase into a second language. Drop-down box1404 provides several selections for the user in determining whichlanguage the word or phrase is to be translated into. A button 1406causes the I3ML player module to obtain the translation of the word orphrase which has been entered by the user, and to display it in field1408.

[0506] As described above in connection with FIG. 13, the interface 1400is implemented by the I3ML programmer linking an action corresponding toa ALTAVISTA's BABELFISH™ SOAP service, such that when a user fills infield 1402 and clicks button 1406, the BABELFISH server is accessed.Once the user clicks on button 1406, the player module makes a properlyformatted SOAP call to ALTAVISTA's language translation system. The I3MLplayer module transmits the word or phrase entered by the user toALTAVISTA and transmits the translation of the word or phrase asreported by ALTAVISTA into field 1408. Although this example merelyillustrates the retrieval of a translation for a single word or phrase,the present invention contemplates that any type of text messages couldbe translated in this fashion, enabling “chat room” type programs to beused by people employing different languages.

[0507] A set of I3ML which may be employed to generate interface 1400,and which provides the operation as described above, may be illustratedas such: <iii version=“0.9.1”><insert><header name=“”></header><servername=“BabelFish” protocol=“HTTP” host=“services.xmethods.net”port=“80”></server><action name=“BabelFish” server=“BabelFish”target=“/perl/soaplite.cgi” blockgui=“false” method=“SOAP”uri=“urn:xmethodsBabelFish” soapservice=“BabelFish” soapaction=“urn:xmethodsBabelFish#BabelFish”><send from=“ebTranslationmode”property=“SelectedItemID” attributes=“xsi:type=&quot;xsd:string&quot;”to=“translationmode”/><send from=“ebSourceData” property=“Text”attributes=“xsi:type=&quot;xsd:string&quot;” to=“sourcedata”/><receiveto=“ebReturn”property=“Text” from=“return”/></action><object name=“Window1” parent=“”class=“Window”><property name=“BorderStyle” value=“Sizeable”/><propertyname=“Caption” value=“Altavista Translate”/><property name=“Height”value=“202”/><property name=“Left” value=“258”/><property name=“Top”value=“116”/><property name=“Width” value=“458”/><propertyname=“MaximizeButton”value=“True”/><property name=“MinimizeButton” value=“True”/><propertyname=“SystemMenu” value=“True”/></object><object name=“ebSourceData”parent=“Window1” class=“EditBox”><property name=“Caption”value=“EditBox1”/><property name=“Left” value=“137”/><property name=“Top”value=“24”/><property name=“Height” value=“21”/><property name=“Width”value=“285”/></object><object name=“ebTranslationmode” parent=“Window1”class=“Dropdown”><property name=“Caption” value=“EditBox2”/><propertyname=“Left”value=“139”/><property name=“Top” value=“58”/><property name=“Height”value=“21”/><property name=“Width” value=“121”/><data><insertitem><propertyname=“ItemID” value=“en_fr”/><property name=“ItemText” value=“English toFrench”/></insertitem><insertitem><property name=“ItemID”value=“fr_en”/><propertyname=“ItemText” value=“French to English”/></insertitem></data></object><objectname=“ebReturn” parent=“Window1” class=“EditBox”><property name=“Caption”value=“EditBox3”/><property name=“Left” value=“140”/><property name=“Top”value=“126”/><property name=“Height” value=“21”/><property name=“Width”value=“284”/></object><object name=“Label1” parent=“Window 1”class=“Label”><property name=“Caption” value=“Text To beTranslated”/><property name=“Left” value=“20”/><property name=“Top”value=“28”/><property name=“Height” value=“16”/><property name=“Width”value=“113”/></object><object name=“Label2”parent=“Window1” class=“Label”><property name=“Caption” value=“LanguagePair”/><property name=“Left” value=“29”/><property name=“Top”value=“62”/><property name=“Height” value=“13”/><property name=“Width”value=“103”/></object><objectname=“Label3” parent=“Window1” class=“Label”><property name=“Caption”value=“Translated Text”/><property name=“Left” value=“23”/><propertyname=“Top”value=“130”/><property name=“Height” value=“13”/><property name=“Width”value=“101”/></object><object name=“Button1” parent=“Window 1”class=“Button”><property name=“Caption” value=“Translate”/><propertyname=“Left”value=“140”/><property name=“Top” value=“90”/><property name=“Height”value=“25”/><property name=“Width” value=“75”/><method name=“LeftClick”action=“BabelFish”/></object></insert></iii>

[0508]FIG. 15 is a block diagram that illustrates the components of I3MLserver 12 in more detail, according to one embodiment of the invention.In this embodiment, I3ML server 12 comprises a listener component 200,which listens on the HTTP port for a target request. A target request isa request for an item of data (hereinafter referred to as “target”). Therequest is either a POST or a GET request issued by the I3ML player. Thelistener component 200 expects a packaged set of parameter(s) from theplayer module. It also passes the “name” of the target as one of theparameters in the POST or the GET request. Advantageously, thisparameter called “name” is a mandatory parameter. No other parameterssent by the server can have the same “name”. The client can also passother parameters as expected by the “target”.

[0509] Listener component 200 parses the input parameters and convertsthem into a internal data structure which supports look up on aname-value pair. The data structure used in the embodiment shown is thedictionary. This data structure supports a (Key, Value) association. Thelistener component 200 converts the input from the player module intothis structure such that the parameter name is the “key” and theparameter value corresponds to the “value”.

[0510] The target execution component 201 then uses this dictionaryobject to determine the name of the target in question. During theregistration process the target is registered in the target map module214 and has a definition that has been stored in the correspondingtarget definition file. The target execution component 201 loads thetarget map and does a look up for the target in question and determinesthe location of the target description file. The target description fileis then loaded into the memory. The target description file is an XMLrepresentation of the target. It describes the input parameters thetarget expects, the services which the target needs to execute to createthe data source, and the templates which the target needs to apply togenerate the I3ML output. The target execution component 201 then parsesthe target description file into its internal data components asfollows:

[0511] a) input parameters collection 204

[0512] b) output parameters collection

[0513] c) services collection 202

[0514] d) I3ML template object 205

[0515] Input parameter collection 204 contains parameter objects each ofwhich corresponds to an input parameter in the target description file.A parameter is represented as a data structure which has a name, typeand value. The name and type are filled in at this point of time fromthe target description file.

[0516] Services collection 202 is a collection of service objects eachcorresponding to a server tag in the target description file andtransform maps 203. Each service has the following objects:

[0517] a) input parameters 208

[0518] b) output parameters 209

[0519] c) connection information 210

[0520] Connection information 210 varies for each particular connectorand is the information that the connector requires to connect to theservice. The data for the input parameters for the service can be mappedfrom one of the following:

[0521] a) one of the input parameters to the target 204;

[0522] b) one of the output parameters from one of the services thathave been run before this service 209; and

[0523] c) a constant.

[0524] Each of the above parameters can be transformed to generate inputfor the services. This transform is specified in XSL (refers to“Extensible Stylesheet Language”), which allows the user to transformthe mapped parameter to the desired parameter using all the featuresavailable in XSL. The collection of these mapping and transforms foreach parameter for the service constitute the transform maps 203.

[0525] Server 12 allows integration of a variety of services like SOAPServices, Stored Procedures, HTTP Post and GET requests. In a preferredembodiment, this is achieved through the use of connectors 207. Aconnector 207 is an object which implements interfaces defined by theconnectors specification. The connector specification currently demandsthat to be a connector implement the IService interface. The code shownbelow indicates the IDL(refers to “Interface Definition Language”) forthe IService interface: [ odl,uuid(DF429084-9D0E-400F-9E6A-67344E074DF2), version(1.0), hidden, dual,nonextensible, oleautomation ] interface _IService : IDispatch {[id(0x60030000)] HRESULT getInputParameters([out, retval]_(—)CParameters** ); [id(0x60030001)] HRESULT getOutputParameters([out,retval]_(—) CParameters** ); [id(0x60030002)] HRESULT InvokeService([in]_CParameters* objInputParameters, [in, out]_CParameters**objOutputParameters, [in, out] BSTR* strError, [out, retval]VARIANT_BOOL* ); [id(0x60030003)] HRESULT getName([out, retval] BSTR* );[id(0x60030004)] HRESULT getResultSet([out, retval] BSTR* );[id(0x60030005)] HRESULT getLastError([out, retval] BSTR* );[id(0x60030006)] HRESULT Initialize( [in, out] IXMLDOMElement**objServiceXML, [out, retval] VARIANT* ); };

[0526] The functions of the IService interface allow the connector toencapsulate most of the service specific details in the connector object207. The services collection 202 is a collection of services representedby connectors and transform maps for each of the services. Data source206 represents the data views presented by the services present in theservice collection. Advantageously, this comprises an XML string whichcontains information about each service, the names of the parametersreturned and the data contained in each of the parameters, as shownbelow: <DataSource> <InputParameters> <Parametername=“testparameter”>TestValue</Parameter> </InputParamters> <Servicename=“TestService” Executed=“1”> <Parameter name=“TestResult”>HelloWorld</Parameter> </Service> </DataSource>

[0527] I3ML template object 205 is an XSL stylesheet which is appliedagainst the data source. It represents the output that is the result ofthe target.

[0528] XSL transformer 212 is a component that applies an XSL stylesheetto an XML and generates an output. Generally this component is intendedto be a wrapper around an XSL processor. The processor currently beingemployed is similar to Microsoft's MSXML parser.

[0529] For each Service in the target description file the targetexecution component 201 does the following:

[0530] a) Look up the service type from the service repository 213 andcreate the appropriate connector;

[0531] b) look up the service definition from the service repository213;

[0532] c) initialize the connector with information from the servicerepository 213; and

[0533] d) add the connector to the services collection 202.

[0534] After the internal data structures have been created, the targetexecution component executes the services present in the servicescollection. To execute each service, server 12 determines, for eachparameter, the value of the input parameters. In one embodiment, this isdetermined by looking up the transform map 203 which indicates how theinput parameter for the service should be obtained. The target executioncomponent 201 applies the transforms by running the input through theXSL transformer 212 and inserting the determined values into the inputparameter collection held by the service 208.

[0535] The target execution component then requests the execution engine211 to execute the service. This may require the use of service-specificdrives/components. After the service has been executed, the targetexecution component 201 obtains, from the connection execution engine211, the output parameters 209 for the service and adds them to the datasource 206.

[0536] After all the services have been run the target executioncomponent 201 then loads the I3ML template 205. It runs the I3MLtemplate 205 against the data source 206 by passing it through the XSLtransformer 212. The result of the transformation process is an I3MLstring. The target execution component 201 then returns this I3MLinformation to the listener component 200. The listener component 200 inturn sets the MIME (refers to “Multi Purpose Internet Mail Extensions”)type of the returned data to text/I3ML and returns it to the playermodule.

[0537]FIG. 16 is a flowchart that illustrates the steps that areperformed during a design phase in order to enable a target to beaccessed via a target request from player module. At step 1601, thesystem performs a target registration process of exposing the target tothe outside world. According to one embodiment, the server maintains afile which lists all the targets it exposes to the outside world. Thisfile is called the target map. Registration of the target at step 1601may also involve adding information about the target to this file, andregistration of the target description file (TDL) in the server.

[0538] The target map consists of a series of <Target> tags eachdescribing a target, such as: <Target name=“SampleTarget> <TargetInfourl=“C:\Targets\SampleTarget.xsl”/> <Target>

[0539] TargetInfo contains information about the target. Url points tothe location of the target file on the server.

[0540] At step 1602, the system defines the following:a) the targetinput parameters; b) the services the target uses; and c) the templatethat the target will apply on the returned data if any. An example of atarget definition file is shown below: <Actionname=“GetCustomerInformation”> <InputParameters> <Parametername=“CustomerID” type=“Schema1”/> </InputParameters> <OutputParameters><Parameter name=“ReturnValue” type=“Schema2”/> </OutputParameters><Services> <Service name=“GetUsers”/> </Services> <Template><File>C:\user\serviceExecutor\ROBONAMEN\getusers.xsl</File> </Template></Action>

[0541] The following is a brief description of each tag in the targetdescription file, according to one embodiment of the invention.

[0542] Action

[0543] The target definition file begins with the action tag. This taghas a single attribute which defines the name of the action.

[0544] InputParameter: This tag defines input parameters that it expectsto be passed on when it is called. When the player calls the target theserver extracts the server looks in the request for these parameters.This tag is a holder for the parameter tag, which hold the parameters inquestion.

[0545] Parameter

[0546] This tag defines the parameter in question. It contains twoattributes.

[0547] a) Name:defining the name of the attribute

[0548] b) Type:defines the XSD(Extensible Data) type of the attribute.

[0549] At step 1604, the services tag lists the services that the targetintegrates. Services which are used here need to be defined in theservices repository at step 1603 (which is again a file). Each serviceis defined in the service tag. At step 1605, the services tag may embedXSL statements within it to lend a dynamic nature to the services whichcan be executed. These conditions are referred to as “Run Conditions”.<Services xmlns:xsl=“”> <xsl:iftest=“./DataSource/InputParameter/Parameter[@name=‘Parameter1’]/@value=‘RunService1’”> <Service name=“TestService”> <InputMap> <Mapfrom=“TargetParameter1” to=“Service1Parameter”> <Transformxsl=“ServerXSL”> <xsl:for-each select=“./Object/item”> <xsl:value-ofselect=“./@value”/> </xsl:for-each> </Transform> </Map> </InputMap></Service> </xsl:if> </Services>

[0550] Service

[0551] Each service tag has an attribute called name. This is a uniqueidentifier for the service. The service can also contain a tag calledmetainfo. MetaInfo is an optional tag. If absent, the name attribute isused in its place. This refers to the name of the service in the servicerepository. The service repository contains detailed data about theservice that the “server” utilizes to actually run the service.

[0552] At step 1606, the system employs an input map. Each “Service”consists of a inputmap. An input map consists of a series of map tags.Each map tag defines how the input parameters for the target map ontothe input parameters for the service.

[0553] Map

[0554] Preferably, each map tag contains the following attributes:

[0555] a) from:defines the input parameter from the target (optional)

[0556] b) to:defines the input parameter of the service which is beingaddressed.(mandatory)

[0557] c) constant:defines a constant in lieu of from

[0558] d) expr:Xpath expression against from or constant.

[0559] In addition to these attribute if the transform to be applied iscomplex each map element may have a Transform tag.

[0560] Transform

[0561] A transform can be specified as to how the value specified by the“from” will be mapped to the “to” attribute. The transform will bespecified in xsl . The XSL is written with the “from” attribute as thesource.

[0562] At step 1607, the template tag defines the I3ML template, whichis applied against the data source. The template tag has a file tagwhich points to a template file. The template file is a XSL file. Thetemplate tag can have multiple files with XSL statements embeddedbetween them. These XSL statements are evaluated against the datasource. After the XSL statements have been applied the template isdetermined to be the first available <File> element. For instance:<Template> <xsl:iftest=“./DataSource/Service[@name=‘Service1’]/ResultSet/Row/Column[@Name=‘Col1’]=‘6’”> <File>C:\Test1XSL.xsl</File> </xsl:if> <xsl:iftest=“./DataSource/Service[@name=‘Service1’]/ResultSet/Row/Column[@Name=‘Col1’]=‘7’”> <File>C:\Test2XSL.xsl</File> </xsl:if> </Template>

[0563] Additional steps are performed when the server runs. When theplayer module issues an HTTP request to the server, it is trapped by aweb server, such as web server 26 shown in FIG. 2. The web server 26invokes server 12. Server 12 parses the input parameters in the HTTPrequest and determines the target requested by the player. Server 12parses the input parameters and stores them in an internal datastructure. Server 12 also creates the data source and adds the inputparameters to the data source.

[0564] The server determines the target description file describing thetarget and loads it into memory. This is an XML file which describes thetarget.

[0565] The server determines the services to be run from the <Services>tag in the target description. The tag may contain XSL statements whichrepresent run conditions on the services. The services tag is evaluatedagainst the data source. If the run conditions on a particular serviceare not met then it is excluded from the list of services to beexecuted. If the run conditions are met then the service is added to thelist of services to be executed. After the final list of services to beexecuted is determined each of the services is then readied forexecution. For each service in the service the server determines thetype of service from the service repository and creates the requiredtype of connector. It then passes to the connector the requiredinitialization information.

[0566] For each service, the server determines the values for the inputparameters. The server reads the input parameters for the service fromthe service repository. The input map in the target definition filedefmes how the input values for the input parameters have to be arrived.The server reads the instructions from the target definition file andperforms the requisite transforms and determines the input values forthe service.

[0567] After the input parameters have been determined the serverinvokes the connector for the service with appropriate input parameters.The connector packages the input parameters as required by the servicesand invokes the services. It takes the output parameters from theservice and un-packages them for use by the server.

[0568] The server then creates a entry in the data source for theservice and adds the output parameters to the data source. These stepsare performed by the server for each service in the services collection.

[0569] After the data source has been populated with output parametersfor all the services, the system determines the template to be loaded.The template tag can contain XSL statements. The server applies the datasource against the XSL statements in the template tag. After the XSLstatements have been applied, the first file tag in the resultrepresents the I3ML template. The server loads this template intomemory. The template is then applied against the data source and theresultant file of I3ML is generated. The file of I3ML is then sent backto the server as response to the HTTP request.

[0570] The present invention also provides the advantage that newfunctions and operations can be used in connection with old datasources. For instance, a database may have software associated therewithwhich enables a user to perform a number of operations with the datastored in the database. The present invention enables a user to create anew user interface to access the data in the database and to create newoperations that may be performed with the data in the database byassociating actions to be performed on the data when retrieved from thedatabase.

[0571] Thus, while there have been shown and described and pointed outfundamental novel features of the invention as applied to alternativeembodiments thereof, it will be understood that various omissions andsubstitutions and changes in the form and details of the disclosedinvention may be made by those skilled in the art without departing fromthe spirit of the invention. It is the intention, therefore, to belimited only as indicated by the scope of the claims appended hereto. Itis to be understood that the drawings are not necessarily drawn toscale, but that they are merely conceptual in nature.

What is claimed is:
 1. A system for generating, on a user terminal, auser interface comprising at least one interface item, wherein: saidsystem is configured to store a set of data corresponding to said atleast one interface item, wherein said set of data comprises data forgenerating, and controlling the performance of an operation associatedwith, said at least one interface item, wherein upon a user interactingwith said at least one interface item, said system is configured toperform said action associated with said at least one interface item,without performing any other action corresponding to said userinterface.
 2. The system in accordance with claim 1, wherein said set ofdata comprises: object data for displaying said at least one interfaceitem; action data associating an action with said interface item; andevent data for associating said action data with an event, wherein upona user performing said event, said system is configured to perform saidaction associated with said event for said at least one interface item.3. The system in accordance with claim 1, wherein said set of data isstored and transmitted in an XML syntax.
 4. The system in accordancewith claim 1, wherein said system further comprises a player module,said player module configured to receive said set of data correspondingto said at least one interface item and to generate said at least oneinterface item on said user interface.
 5. The system in accordance withclaim 4, wherein said system further comprises a server, said serverconfigured to transmit a first part of said set of data to display saidinterface item on said user interface, and to transmit a second part ofsaid set of data in order to control said operation of said interfaceitem upon a user interacting with said interface item.
 6. A system fordisplaying a user interface comprising at least one interface item, saidsystem comprising: a server configured to transmit a set of data, saidset of data comprising data corresponding to said at least one interfaceitems in an XML syntax; a player module for receiving said set of data,said player module configured to process said set of data in order togenerate said at least one interface item on said user interface.
 7. Thesystem in accordance with claim 6, wherein said set of data comprises aname of a server, said server storing data to be employed by said playermodule to modify said interface item when said user interacts with saidinterface item.
 8. The system in accordance with claim 7, wherein saidstream of data comprises a name of a file, said file storing data to beemployed by said player module to modify said interface item when saiduser interacts with said interface item.
 9. The system in accordancewith claim 1, wherein said set of data further comprises event data forassociating said interface item with an event.
 10. The system inaccordance with claim 9, wherein said set of data further comprisesaction data for associating an event of said interface item with anaction.
 11. The system in accordance with claim 10, wherein systemperforms said action when said event occurs.
 12. The system inaccordance with claim 11, wherein said event is associated with anaction group.
 13. The system in accordance with claim 12, wherein saidaction group is sequential.
 14. The system in accordance with claim 13,wherein said system performs each said action of said action group oneafter another.
 15. The system in accordance with claim 14, wherein saidaction group is parallel.
 16. The system in accordance with claim 15,wherein said system performs at least two actions of said action groupsimultaneously.
 17. The system in accordance with claim 11, wherein saidaction is a local action.
 18. The system in accordance with claim 17,wherein said data corresponding to said local action is stored in alocal server and is delivered to said player module for processing saidinterface item.
 19. The system in accordance with claim 18, wherein saidlocal action comprises a math process.
 20. The system in accordance withclaim 18, wherein said local action comprises a logic process.
 21. Thesystem in accordance with claim 11, wherein said action is a remoteaction.
 22. The system in accordance with claim 6, wherein said set ofdata further comprises attributes of said at least one interface item.23. A player module for generating a user interface comprising aplurality of interface items, said player module configured to receivedata in XML syntax from a server, said data comprising a set of datacorresponding to each one of said plurality of interface items, saidplayer module further configured to process each said set of data inorder to display each of said plurality of interface items on said userinterface.
 24. A server configured to transmit to a player module datain an XML syntax, said data comprising a set of data corresponding to atleast one interface item of a user interface, wherein said player moduleis configured to receive said set of data and to process said set ofdata in order to display said at least one interface item on said userinterface.
 25. The system in accordance with claim 24, wherein saidserver further comprises an XSL transform module coupled to said playerto receive data corresponding to a user interaction with said at leastone interface item.
 26. The system in accordance with claim 24, whereinsaid XSL transform module is configured to transform said userinteraction data into XML syntax.
 27. The system in accordance withclaim 26, wherein said XSL transform module is coupled to at least oneconnector.
 28. The system in accordance with claim 27, wherein said atleast one connector is coupled to a data source.
 29. The system inaccordance with claim 28, wherein said at least one connector isconfigured to convert said user interaction data in XML syntax into adata request having a format which is employed by said data source. 30.A designer module for creating a user interface, comprising: a pluralityof interface items selectable by a user; a first window for receiving atleast one selected interface item in a position selected by said user; asecond window for enabling said user to associate with said selectedinterface item an action; a processing module for generating a set ofdata corresponding to said selected interface item and for transmittingsaid set of data to a server for storage.
 31. A system for deliveringcontent to a user via Internet, said system comprising: a user terminalhaving a web browser configured to provide, on a user interface, a webpage to a user, said web page comprising a plurality of interface items;a server configured to store for each said interface item a set of data,said server configured to transmit a first part of said set of data todisplay said interface item on said user interface, and to transmit asecond part of said set of data in order to control said interface itemupon a user interacting with said interface item.
 32. A system forgenerating a user interface, said system comprising: a user terminal fordisplaying said user interface; a designer module for enabling a user toposition interface items on said user interface, wherein said interfaceitems of said user interface are arranged so as to substantiallyresemble a typical Windows interface; a server configured to store a setof data corresponding to each said interface item, said serverconfigured to transmit a first part of said set of data to display saidinterface item on said user interface of said user terminal, and totransmit a second part of said set of data in order to control saidinterface item upon a user interacting with said interface item.
 33. Asystem for enabling a user to perform a new function with data stored ina database, said system comprising: a database for storing at least oneitem of data; a user terminal for displaying a user interface, said userinterface comprising a plurality of interface items selectable by auser, wherein each one of said plurality of interface items correspondsto an item of data stored in said database; a processing module forenabling a designer to associate an action to be performed on said itemof data when an event occurs, wherein said action provides a functionwhich said database was not previously able to perform.